时间:2010-07-26 13:28:15

标签: java spring maven-2

5 个答案:

答案 0 :(得分:9)

答案 1 :(得分:4)

答案 2 :(得分:2)

onejar-maven-plugin允许您通过创建具有依赖项的单个jar文件来解决maven和spring矛盾。它通过将jar文件放在另一个jar(one-jar)中来创建jar文件的包装器。

    <plugin>
            <groupId>org.dstovall</groupId>
            <artifactId>onejar-maven-plugin</artifactId>
            <version>1.4.4</version>
            <executions>
              <execution>
                <goals>
                    <goal>one-jar</goal>
                </goals>
              </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>your.package.App</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

<!-- outside build tag in pom.xml -->
<pluginRepositories>
        <pluginRepository>
            <id>onejar-maven-plugin.googlecode.com</id>
            <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url>
        </pluginRepository>
</pluginRepositories>

答案 3 :(得分:0)

除了@GrampaJohn发布的解决方案之外,我还必须确保将所需的库打包到生成的JAR文件中,而不是将它们提取到生成的JAR中。

在Eclipse Mars中,在对pom.xml进行更改后(按照@GrampaJohn的建议添加了maven-shade插件),请按照以下步骤操作:

  

档案 - &gt;出口 - &gt;选择Java文件夹 - &gt; 可运行的JAR文件 - &gt;输入   启动配置(主文件),导出目标和   库处理,选择“将所需的包打包到生成的库中   JAR - &gt;点击完成

答案 4 :(得分:0)

(假设您已经为 XML 添加了所有正确的标头,如果您仍然面临这个问题,这就是我的情况) 我知道这个问题是用 Maven 提出的,但我使用的是 Gradle,我遇到了完全相同的问题。对于使用 Gradle 打包 Jars 并面临此问题的其他任何人,这是我解决的方法,

jar {
    manifest {
        attributes("Created-By"      : ".....",
                "Specification-Title": ".....",
                "Main-Class"         : "$mainClassName",
                "Class-Path"         : configurations.compile.collect { it.getName() }.join(' '))
    }
}

添加“类路径”作为编译集合为我解决了这个问题。

如果有人在使用上述代码后遇到此错误,

 Cannot change dependencies of configuration ':compile' after it has been resolved.

您需要在“依赖项”块之后移动此块。