apache camel - 打包一个可执行的jar [英] apache camel - packaging an executable jar

查看:38
本文介绍了apache camel - 打包一个可执行的jar的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 maven 构建我的 jar (Intellij IDEA IDE).它是使用 Apache Camel 构建的应用程序.摘自我的 pom.xml:

I'm using maven for building my jar (Intellij IDEA IDE). It is app built using Apache Camel. An excerpt from my pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <mainClass>MainDriver</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

我能够从 maven 中检索 jar 文件,但运行后我得到的只是 NoClassDeFFound 错误.

I'm able to retrieve a jar file from maven but upon running all I got are the NoClassDeFFound errors.

最后,我尝试使用 one-jar 插件 (http://one-jar.sourceforge.网/ ) .我已经让它工作了.我的问题是我可以在不使用一个罐子的情况下达到同样的效果吗?我不喜欢 one-jar 的包装,它的作用是当您从 one-jar 中提取 jar 时,您会在其中找到您的应用程序 jar,因此您需要对 jar 进行额外提取才能获得到您的课程/资源.我的配置文件在资源上,有时我需要修改它.

Finally, I've tried using the one-jar plugin (http://one-jar.sourceforge.net/‎) . And I've got it working. My question is can I achieve the same without using one-jar? I'm not liking the packaging of one-jar, what it does is when you extract the jar from one-jar, you will find your app jar within it, so you'll need to do an extra extraction on your jar to get to your classes/resources. My configuration files are on resources and from time to time, I'll be needing to modify it.

谢谢!

推荐答案

maven-shade-plugin 使用您的应用程序代码创建一个 jar,并将所有依赖项合并到一个 jar 文件中.这种方法的问题是您需要决定如何处理名称冲突的文件.这是我们用来为 Camel 应用程序构建可执行 JAR 的配置,包括 Spring 和所有必需的依赖项.

The maven-shade-plugin creates a jar with your application code and all dependencies merged into a single jar file. The problem with this approach is that you need to decided what to do with files with conflicting names. This is the configuration we use to build executable JARs for our Camel apps, including Spring and all required dependencies.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.5</version>
    <configuration>
        <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <mainClass>org.apache.camel.spring.Main</mainClass>
            </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/spring.tooling</resource>
            </transformer>
            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                <resource>META-INF/cxf/bus-extensions.txt</resource>
            </transformer>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
            <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
                <resource>META-INF/INDEX.LIST</resource>
            </transformer>
            <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
                <resource>META-INF/MSFTSIG.SF</resource>
            </transformer>
            <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
                <resource>META-INF/MSFTSIG.RSA</resource>
            </transformer>
        </transformers>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
        </execution>
    </executions>
</plugin>

这篇关于apache camel - 打包一个可执行的jar的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆