Java 使用maven从已部署工件运行主类
我不明白。我已经将pom.xml设置为使用Maven exec插件,这样我就可以使用正确的类路径,-D defines和-javaagent执行项目中的一些类。因此,从一个内置了类的shell开始。/target/classes等。。我可以使用Java 使用maven从已部署工件运行主类,java,maven,main,artifact,exec-maven-plugin,Java,Maven,Main,Artifact,Exec Maven Plugin,我不明白。我已经将pom.xml设置为使用Maven exec插件,这样我就可以使用正确的类路径,-D defines和-javaagent执行项目中的一些类。因此,从一个内置了类的shell开始。/target/classes等。。我可以使用 mvn exec:java -Dexec:mainClass=classWithAMainMethod 到目前为止一切都很好 现在我想发布我的项目(一个jar工件),我仍然希望能够使用pom.xml中的配置来运行具有正确参数的类等。。我该怎么做?有什么
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似乎在工件jar的META-INF/maven中结束。有没有办法使用它
- 创建一个虚拟pom,我想在其中运行我的项目,并且只依赖于我的项目工件。然后我可以使用exec:java来运行主类,但它不使用我的项目pom中的配置
谢谢。您是否尝试过使用类似的工具
这听起来像是你在寻找的东西。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>
org.codehaus.mojo
appassembler maven插件
1.2.2
平的
解放党
-Djava.rmi.server.hostname=localhost
-javaagent:${spring.javaagent.jar}
foo1
net.foor.FooMain
...
在Eclipse中,我创建了一个外部工具启动器,以从target/appassembler/bin运行生成的脚本
在我想要部署到的机器上(假设访问安装/部署了我的工件+依赖项的内部Maven存储库):
- 首先使用wget或mvn依赖项:获取我的工件jar的副本
- 提取聚甲醛。解压-j artifact.jar*/pom.xml*
- 运行mvn appassembler:assemble-DassembleDirectory=
- 将artifact.jar移动到./lib目录中
- 在./bin中设置对生成的shell脚本的执行权限