我使用不同的插件(ant4eclipse)来装箱我的文件。避免maven-jar插件执行的最佳方法是什么?
<plugin>maven-jar-plugin</plugin>
<exclude> ** / * < / exclude>
<skip>true</skip>
没有工作
答案 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>