gpt4 book ai didi

java - Maven - 抑制 [WARNING] JAR 将为空 - 没有内容被标记为包含在 pom.xml 中

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:59:42 39 4
gpt4 key购买 nike

我的 Maven 项目有意只需要 src/test/javasrc/test/resources。删除 src/main/* 文件夹后,预期的警告出现在 mvn verify 上:

[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: D:\dev\java\my-project\target\my-project-0.0.1-SNAPSHOT.jar

除了在 src/main/java 中有一个带有空 main() 方法的类之外,如何抑制这个警告?

编辑:

由于 -q 抑制了警告,如果这可以在 pom.xml 中以编程方式完成,后续将是?

最佳答案

这是(据我所知)最干净的解决方案
对于不包含生产代码但包含测试的项目:

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

它表示你想要什么:

  • 跳过尝试将“非生产代码”打包到 jar 中
  • 不要尝试安装/部署不存在的 jar

保持测试执行不变。


@John Camerin提到不建议使用 <packaging>pom</packaging>
除非你的 pom 唯一应该做的就是收集依赖项。
否则,如果您有测试,它们将在没有警告的情况下被跳过,这不是您想要的。

更短的选择

其中一些配置参数与用户属性相关联:

  • maven-jar-plugin skipIfEmpty 遗憾的是参数没有链接到任何用户属性
  • maven-install-plugin skip 参数从 maven.install.skip 获取其值
  • maven-deploy-plugin skip 参数从 maven.deploy.skip 获取其值

这意味着 pom 可以缩短为

    <properties>
<maven.install.skip>true</maven.install.skip>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>

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

关于java - Maven - 抑制 [WARNING] JAR 将为空 - 没有内容被标记为包含在 pom.xml 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51570630/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com