maven-2 - 如果调用迭代,maven appassembler 插件不包含当前工件

标签 maven-2 maven-3 maven-plugin appassembler

[更新]原来的问题(如下)已解决。我需要打电话

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/

相关文章:

java - 如何将 FileSet 转换为 Mojo 中的文件列表

Maven 似乎正在拉入具有测试范围的 jar

java - Maven包错误: No compiler is provided in this environment

java - Maven WAR 插件 - 更改前端资源位置

java - 如何使用 Maven Enforcer 插件?

java - 如何将 https/ssl 与 Maven/Mortbay Jetty 插件一起使用?

debugging - 在 Maven 网络项目中调试 Maven 插件的执行

eclipse - 在 eclipse 和 tomcat 中测试 maven web 模块

maven - 第一次 mvn 原型(prototype) :generate failed

java - 我如何在 Maven 插件运行之前执行一组目标?