[更新]原始问题(如下)已解决。我需要打电话
mvn package appassembler:assemble
而不是
mvn package
mvn appassembler:assemble
问题:为什么会有区别?
[原始]
我正在尝试使用maven appassembler plugin创建一个具有所有依赖项的命令行工具。它几乎可以工作,但是缺少当前模块的构件。所有相关的工件都将复制到存储库,并且蝙蝠中的类路径包括当前的工件。配置如下:
<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
,两个步骤都将运行。
如果您打算使appassembler部分成为可选部分,则可以将其放入与上述代码相同的配置文件中。