cics-bundle-maven icon indicating copy to clipboard operation
cics-bundle-maven copied to clipboard

Non-reactor bundles fail to deploy if classifier is not set

Open tom-foyle opened this issue 5 years ago • 2 comments

In the scenarios where we create a CICS bundle from an existing project, using the bundle-osgi / bundle-war / bundle-ear / bundle-eba goals, the classifier attribute claims to be optional with a default value of cics-bundle, but omitting it from pom.xml results in a deployment failure with the error message:

[ERROR] Failed to execute goal com.ibm.cics:cics-bundle-maven-plugin:1.0.1-SNAPSHOT:deploy (default) on project standalone-war: Some of the supplied parameters were invalid:
[ERROR]  - bundle: Error reading bundle manifest: Supplied CICS bundle must have a manifest at META-INF/cics.xml

Also, the comment in the samples makes it sound like the cics-bundle value is somehow significant to the packaging method, whereas I think it's actually just an arbitrary string which is appended to the zip filename?

<!-- The bundle classifier indicates that the war should be packaged into a CICS bundle -->
<classifier>cics-bundle</classifier>

Relevant doc pages: https://github.com/IBM/cics-bundle-maven#create-a-cics-bundle-from-an-existing-java-module-using-cics-bundle-maven-plugin https://ibm.github.io/cics-bundle-maven/bundle-war-mojo.html#classifier

tom-foyle avatar Jul 16 '20 20:07 tom-foyle

I'll use bundle-war below to mean all the bundle-war, bundle-ear, etc goals.

I think the thing here is that the bundle-war goal default to it being cics-bundle, but the deploy goal doesn't default to that because it could be being used to deploy a bundle created by either a bundle-war goal (where classifier will be cics-bundle or another classifier as specified) or a build goal (where there will be no classifier, at least not without explicitly setting it).

I think this will need to be a documentation fix and logging fix - not sure I can see a fix that makes it 'just work' for all combinations. Perhaps it's possible to work out which goals have run ahead of the deploy goal? @stewartfrancis

However, we could do the following:

  • in the README, in the Deploy a CICS bundle section, mention that you should also use the <classifier> configuration option to select the bundle, in the case where you're deploying a bundle-war-built bundle.
  • in the log messages for the deploy goal, print out the file that we're deploying. This'll make it more obvious when it ends .war instead of .zip.

Any other ideas?

ind1go avatar Jan 18 '21 11:01 ind1go

Would definitely be good to fix it though because I fall over it every time I create a new project! 😆

ind1go avatar Jan 18 '21 11:01 ind1go