我不明白。我已经设置了我的pom.xml以使用Maven exec插件,因此我可以使用正确的类路径执行项目中的一些类,-D define和-javaagent。所以从一个带有./target/classes等内置类的shell。我可以使用
运行main()方法mvn exec:java -Dexec:mainClass=classWithAMainMethod
到目前为止一切都很好。
现在我想发送我的项目(一个jar工件),我仍然希望能够使用我在pom.xml中放置的配置来运行具有正确参数的类等。我该怎么办它?有没有办法留下来
mvn -artifactJar=MyArtifact.jar exec:java -Dexec:mainClass=classWithAMainMethod
当我拥有的是MyArtifact.jar(或者包含MyArtifact.jar的maven存储库)?
我尝试了以下内容:
获取具有依赖关系的jar:获取目标并解压缩。我无能为力 因为pom.xml似乎最终出现在神器罐中的META-INF / maven中。有没有办法使用它?
创建一个虚拟pom,我希望运行我的项目,对项目工件只有一个依赖项。然后我可以使用exec:java来运行主类,但它不会使用我的项目pom中的配置。
感谢。
答案 0 :(得分:1)
您是否尝试使用onejar之类的内容?
这听起来像你正在寻找的。 p>
答案 1 :(得分:1)
AppAssembler插件对我来说非常好。我在构建部分中用类似的东西替换了项目pom中的exec插件配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<repositoryLayout>flat</repositoryLayout>
<repositoryName>lib</repositoryName>
<extraJvmArguments>
-Djava.rmi.server.hostname=localhost
-javaagent:${spring.javaagent.jar}
</extraJvmArguments>
<programs>
<program>
<name>foo1</name>
<mainClass>net.foor.FooMain</mainClass>
</program>
...
</configuration>
</plugin>
在Eclipse中,我创建了一个外部工具启动程序,用于从 target / appassembler / bin
运行生成的脚本在我想部署的机器上(假设访问已安装/部署了工件+依赖项的内部Maven存储库):