[更新]原来的问题(如下)已解决。我需要打电话
mvn package appassembler:assemble
而不是
mvn package
mvn appassembler:assemble
问题:为什么会有差异?
[原始]
我正在尝试使用 maven appassembler plugin创建一个包含所有依赖项的命令行工具。它几乎可以工作,但缺少当前模块的工件。 所有依赖的工件都被复制到存储库,并且 bat 中的类路径包含当前工件。 配置如下:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<configuration>
<platforms>
<platform>windows</platform>
<platform>unix</platform>
</platforms>
<programs>
<program>
<mainClass>${mainclass}</mainClass>
<name>huffman</name>
</program>
</programs>
</configuration>
</plugin>
有什么想法吗?
最佳答案
该目标并非设计为独立运行,而是作为生命周期的一部分 - 因此,它取决于 package
中的目标所采用的流程,以将有关其内容的信息返回到项目实例。已创建。当您将其作为两个 Maven 命令运行时,信息会丢失。
您应该使用以下命令,而不是使用这些命令:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<configuration>
...
</configuration>
<executions>
<execution>
<id>assemble</id>
<goals>
<goal>assemble</goal>
</goals>
</execution>
</executions>
</plugin>
这意味着您只需运行 mvn package
,两个步骤都会运行。
如果您的目的是使应用程序汇编器部分成为可选,您可以将其放入具有与上述相同代码的配置文件中。
关于maven-2 - 如果调用迭代,maven appassembler 插件不包含当前工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5981073/