我没有得到它。我设置了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

听起来像你在寻找的那样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top