从与maven部署的工件运行主类
-
11-12-2019 - |
题
我没有得到它。我设置了mom.xml以使用maven exec插件,因此我可以使用正确的类路径,-d定义和-javaAgent在项目中执行一些类。所以从shell与内置的类./target/classes等。我可以使用运行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,在那里我想在我的项目工件上以单个依赖运行我的项目。然后我可以使用exc:java来运行主类,但它没有使用POM的配置。
谢谢。
解决方案 2
appAssembler插件对我来说很好。我在“项目的POM”中替换了EXEC PLUGIN CONFIG,在构建部分中的内容:
<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存储库已安装/部署):
- 首先使用 wget 或 mvn依赖项:get 获取我的工件jar的副本。
- 提取POM。 Unzip -J-Artifact.jar * /pom.xml *
- 运行 mvn appassembler:组装--dassemblectirectory=。
- 将artifact.jar移动到./lib目录
- 设置生成的shell脚本的执行权限./bin
其他提示
你有没有尝试使用 onejar ?
听起来像你在寻找的那样。
不隶属于 StackOverflow