我正在尝试创建一个解决了所有依赖项的jar,以便我可以从命令提示符运行此jar。我正在使用maven assembly:single
,但每当我这样做时,我都会遇到问题
[ERROR] com.XXX.XXXX.XXX:XXX-XXX-XXX:jar:XXX
[ERROR]
[ERROR] from the specified remote repositories:
[ERROR] A (http://XXXXX/, releases=true, snapshots=true),
[ERROR] B (http://XXXX/, releases=true, snapshots=true),
[ERROR] C (https://repo.maven.apache.org/maven2/, releases=true, snapshots=true
),
[ERROR] D (https://XXXXX, releases=false, snapshots=true)
[ERROR] Path to dependency:
[ERROR] 1) com.test.Report:myjar:jar:0.0.1-SNAPSHOT
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE
xception
这是我正在使用的pom 现在这些罐已经解析并存在于Maven Dependency文件夹中。我可以从Eclipse运行整个项目,但是需要将这个jar提供给包含所有jar的客户端。任何帮助表示赞赏。谢谢:))
答案 0 :(得分:0)
一种方法是在pom.xml中使用“jar-with-dependencies”配置。这将把你所有的依赖包装在jar中 例如:
<build>
<plugins>
<!-- any other plugins -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
另一种方法是使用maven shade plugin。 例如:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<!-- put your configurations here -->
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
maven shade插件基本上会在最后创建两个jar。第一个jar是普通的jar,它只包含源代码的编译类 第二个jar也将包含已编译的类但它还将包含来自所有依赖项的类文件。这是你应该给你的客户的罐子。
答案 1 :(得分:0)
确定。可能没有人会看到这个答案,但我仍然希望有一个关于我未来自我的笔记。这个问题与我得到的例外不同。要运行任何plugin
,请确保<plugin>
位于<plugins>
内的<build>
内(不在<pluginManagement>
下)。这样就运行了插件,并在mvn install
上形成了带有依赖关系的jar。