答案 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.
您需要在“依赖项”块之后移动此块。