19

我正在使用 Maven Assembly 插件来打包一个 jar 文件。

但是当我运行时mvn package,maven 总是触发 [jar:jar {execution: default-jar}] 来创建一个默认的 jar 文件。

所以我将有 2 个 jar 文件(一个由 Assembly 插件创建,一个由我不想创建的 Maven jar 创建)。

如何关闭 default-jar 执行?

在我的pom.xml中,我正在使用:<packaging>jar</packaging>

我不想将其更改为<packaging>pom</packaging>.

4

2 回答 2

37

(...) 所以我将有 2 个 jar 文件(一个由程序集插件创建,一个由我不想创建的 maven jar 创建)。

看起来你正在做相当复杂的事情。在您的情况下,也许 Maven 不是正确的工具。

如何关闭执行:default-jar。

您可以将<phase>相应的执行设置为未知的,例如none

  <plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
      <execution>
        <id>default-jar</id>
        <phase>none</phase>
      </execution>
    </executions>
  </plugin>
  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2</version>
    <configuration>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
    </configuration>
    <executions>
      <execution>
        <id>make-assembly</id>
        <!-- this is used for inheritance merges -->
        <phase>package</phase>
        <!-- append to the packaging phase. -->
        <goals>
          <goal>single</goal>
          <!-- goals == mojos -->
        </goals>
      </execution>
    </executions>
  </plugin>

只要您提供要安装的其他东西,例如程序集(我只测试过install),这似乎就可以工作。但是,当然,这是一个黑客。

于 2010-11-05T02:33:03.223 回答
4

虽然不是问题的直接答案,但您可以排除使用maven jar创建的 jar<useProjectArtifact>false</useProjectArtifact>

于 2010-11-05T02:21:24.523 回答