Apache的骆驼 - 包装一个可执行的JAR [英] apache camel - packaging an executable jar

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

问题描述

我使用Maven构建我的罐子(IntelliJ IDEA的IDE)。它使用Apache的骆驼应用程序内置。从我的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.

最后,我用一个罐子插件( HTTP尝试。净/ )。而且我得到它的工作。我的问题是,我可以达到同样不使用一个罐子?我不喜欢一个罐子的包装,它的作用是当你提取一坛子罐子,你会在其中找到你的应用程序的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的遮阳插件创建一个jar与应用程序code和所有依赖合并成一个jar文件。这种方法的问题是,你需要决定如何处理具有冲突名称的文件做。这是配置,我们用它来建立可执行的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的骆驼 - 包装一个可执行的JAR的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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