[ https://issues.apache.org/jira/browse/CAMEL-3773?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Arkadi Shishlov updated CAMEL-3773: ----------------------------------- Labels: uber-jar (was: ) Description: At context start a version banner is printed to the log: Apache Camel 2.6.0 (CamelContext: camel) started in 2.436 seconds The version string is calculated by ServiceSupport.getVersion(): {code} Package aPackage = getClass().getPackage(); if (aPackage != null) { version = aPackage.getImplementationVersion(); if (version == null) { version = aPackage.getSpecificationVersion(); } } {code} but, in Maven shade-plugin packaged project (to create single uber-jar for distribution to SE environment), the Manifest versions are project version, not Camel. So the wrong version is printed. It would be nice to have this improved to print real Camel version. was: At context start a version banner is printed to the log: Apache Camel 2.6.0 (CamelContext: camel) started in 2.436 seconds The version string is calculated by ServiceSupport.getVersion(): Package aPackage = getClass().getPackage(); if (aPackage != null) { version = aPackage.getImplementationVersion(); if (version == null) { version = aPackage.getSpecificationVersion(); } } but, in Maven shade-plugin packaged project (to create single uber-jar for distribution to SE environment), the Manifest versions are project version, not Camel. So the wrong version is printed. It would be nice to have this improved to print real Camel version. Patch Info: [Patch Available] For the reference, here is my Maven shade plugin setup, which allows me to build fully working Camel uber-jar. {noformat} <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <artifactSet> <excludes> <exclude>org.jboss.seam:jboss-seam</exclude> </excludes> </artifactSet> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <manifestEntries> <Main-Class>com.tieto.cih.core.main.Main</Main-Class> <Specification-Vendor>Tieto</Specification-Vendor> <Implementation-Vendor>Tieto Latvia</Implementation-Vendor> </manifestEntries> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/services/org/apache/camel/TypeConverter</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>META-INF/maven/plugin.xml</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>META-INF/spring.tooling</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>META-INF/info.xml</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>META-INF/DISCLAIMER</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>META-INF/README.txt</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>META-INF/DEPENDENCIES</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>META-INF/LICENSE</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>META-INF/LICENSE.txt</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>META-INF/NOTICE</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>META-INF/NOTICE.txt</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin> {noformat} You might want to add this to FAQ to replace misleading answer. Rejecting uber-jar distribution as a valid target is very inconvenient for SE deployment scenarios. Attached patch is not exactly what the original getVersion() provided, but very close if we take in account current versioning scheme. > Apache Camel version banner is wrong in uber-jar > ------------------------------------------------ > > Key: CAMEL-3773 > URL: https://issues.apache.org/jira/browse/CAMEL-3773 > Project: Camel > Issue Type: Improvement > Components: camel-core > Affects Versions: 2.6.0 > Reporter: Arkadi Shishlov > Assignee: Claus Ibsen > Priority: Minor > Labels: uber-jar > Fix For: 2.8.0 > > > At context start a version banner is printed to the log: > Apache Camel 2.6.0 (CamelContext: camel) started in 2.436 seconds > The version string is calculated by ServiceSupport.getVersion(): > {code} > Package aPackage = getClass().getPackage(); > if (aPackage != null) { > version = aPackage.getImplementationVersion(); > if (version == null) { > version = aPackage.getSpecificationVersion(); > } > } > {code} > but, in Maven shade-plugin packaged project (to create single uber-jar for > distribution to SE environment), the Manifest versions are project version, > not Camel. So the wrong version is printed. It would be nice to have this > improved to print real Camel version. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira