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

2022-09-02 13:18:35

我的 maven 项目故意只需要 和 .删除文件夹后,预期的警告在以下情况下显示:src/test/javasrc/test/resourcessrc/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

除了在 ?main()src/main/java

编辑:

由于抑制了警告,因此后续操作将是是否可以在 ?-qpom.xml


答案 1

该警告实际上基于它是否可以找到配置的 - 默认情况下。<classesDirectory>target\classes

这意味着绕过警告的一种简单方法是将其指向另一个故意的空目录:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <classesDirectory>dummy</classesDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>

或者,为了避免需要空目录,请排除另一个目录中的所有内容:

        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <classesDirectory>src</classesDirectory>
                <excludes>
                    <exclude>**</exclude>
                </excludes>
            </configuration>
        </plugin>

答案 2

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

    <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提到的那样,不建议使用它
,除非你的pom应该做的唯一事情就是收集依赖关系。
否则,如果您有测试,它们将在没有警告的情况下被跳过,这不是您想要的。<packaging>pom</packaging>


推荐