开发者

maven appassembler plugin does not include the current artifact, if called iterative

开发者 https://www.devze.com 2023-03-05 16:47 出处:网络
[Update] The original question (below) is solved. I need to call mvn package appassembler:assemble instead of

[Update] The original question (below) is solved. I need to call

mvn package appassembler:assemble

instead of

mvn package
mvn appassembler:assemble

Question: Why is there a difference?

[Original]

I am trying to use the maven appassembler plugin to create a command line tool with all the dependencies assembled. It almost works but the artifact of the current module is missing. All dependent artifacts are copied to the repo and the classpath in the bat i开发者_如何学JAVAncludes the current artifact. The configuration is as follows:

        <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>

Any ideas?


The goal is not designed to run standalone, but as part of a lifecycle - therefore, it depends on the processes in place by the goals in package to return information to the project instance about what it has created. When you run that as two Maven commands, the information is lost.

Instead of either of these commands, you should be using something like:

<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>

This means that you then just need to run mvn package, and both steps will be run.

If your intent was to make the appassembler portion optional, you could instead put it in a profile with the same code as above.

0

精彩评论

暂无评论...
验证码 换一张
取 消