什么是避免maven-jar的最佳方法?

时间:2010-02-03 00:07:56

标签: java maven-2 ant jar maven-plugin

我使用不同的插件(ant4eclipse)来装箱我的文件。避免maven-jar插件执行的最佳方法是什么?

  • 我尝试删除<plugin>maven-jar-plugin</plugin>
  • 我尝试<exclude> ** / * < / exclude>
  • 我尝试<skip>true</skip>

没有工作

9 个答案:

答案 0 :(得分:44)

在Maven 3.0.x(我尝试过3.0.2)中,您可以通过将maven-jar-plugin执行绑定到不存在的阶段({3}}来禁用default-jar。不幸的是,这在2.2.1中不起作用,但您可以通过为<finalName>执行设置备用<classifier>default-jar来防止它干扰您自己的jar;它仍然会创建一个jar,但它将被设置为项目的辅助工件,并且不会覆盖您创建的那个。这是一个应该在Maven 2和Maven 3中都有效的例子:

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>test</groupId>
  <artifactId>test</artifactId>
  <version>0.1-SNAPSHOT</version>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <id>default-jar</id>
            <phase>never</phase>
            <configuration>
              <finalName>unwanted</finalName>
              <classifier>unwanted</classifier>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

禁用maven-jar-plugin后,maven-install-plugin也可能会给您带来麻烦。在Maven 3中,它可以与maven-jar-plugin相同地禁用:将default-install绑定到不存在的阶段。但是,在Maven 2中maven-install-plugin要求target/classes目录存在,并且当没有主要工件存在时它将安装虚拟jar。

答案 1 :(得分:32)

这应该可以解决问题 - 请注意使用<id>default-jar</id><phase/>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <executions>
          <execution>
            <id>default-jar</id>
            <phase/>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

答案 2 :(得分:4)

在我的情况下,我只想禁用jar插件,因为jar是空的。您可以使用插件配置中的<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <configuration> <skipIfEmpty>true</skipIfEmpty> </configuration> </plugin> 选项

socket(test->state.addr_family, SOCK_RAW, IPPROTO_UDP);

答案 3 :(得分:3)

将jar插件显式绑定到不存在的阶段。

答案 4 :(得分:2)

如果你声明这会怎么样?

<packaging>pom</packaging>

即使它能满足您的需求,也要小心。我不确定是否会出现负面影响 - 例如依赖于你的jar无法找到它的其他maven项目。

答案 5 :(得分:1)

正如其他人所说的那样,除了使用<packaging>pom</packaging>之外,它不可能将其关闭,而package会关闭所有内容并且可能不是您想要的。

即使它会生成两次,一个可行的解决方案是将jar进程绑定到{{1}}阶段,因为这可以保证在默认情况下运行。通过覆盖相同的JAR文件,您会发现在原始版本的任何地方都会使用您的文件。

答案 6 :(得分:0)

  

我使用不同的插件来装箱我的文件。避免maven-jar插件执行的最佳方法是什么?

首先,对于包含类型为jar:jar的项目的package阶段,jar目标为bound by default。其次,没有办法解除绑定到阶段的插件。所以,如果你正在使用另一个插件(?),要么接受生产2个JAR或更改包装(但我认为这不会很好)。

答案 7 :(得分:0)

使用maven 3.3.9,以下对我有用:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.1.2</version>
    <executions>
        <execution>
            <id>default-jar</id>
            <phase>none</phase>
            <configuration>
                <finalName>unwanted</finalName>
                <classifier>unwanted</classifier>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>3.0.0-M1</version>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>

因此,在使用maven-jar-plugin的情况下,我将其绑定到一个不存在的阶段。对于maven-install-plugin,我使用了“跳过”配置参数。对此的documentation说:“将其设置为true可以绕过工件安装。对于不需要在本地存储库中安装的工件,请使用它。”

答案 8 :(得分:-1)

       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>