[ 
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

Reply via email to