我的maven项目故意只需要src/test/java和src/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
Run Code Online (Sandbox Code Playgroud)
除了有一个带有空main()方法的类之外,如何抑制此警告src/main/java?
编辑:
作为-q抑制警告,如果这可以通过编程方式完成,那将是一个后续行动pom.xml.
警告实际上是基于它是否可以找到<classesDirectory>默认配置的target\classes。
这意味着绕过警告的一种简单方法是将其指向另一个故意为空的目录:
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classesDirectory>dummy</classesDirectory>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
或者,为了避免需要空目录,请从另一个目录中排除所有内容:
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classesDirectory>src</classesDirectory>
<excludes>
<exclude>**</exclude>
</excludes>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
对于不包含生产代码但包含测试的项目,这是(据我所知)最干净的解决方案:
<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>
Run Code Online (Sandbox Code Playgroud)
它表明你想要什么:
保持测试执行不变。
就像@John Camerin提到的那样,<packaging>pom</packaging>
除非你的 pom 唯一应该做的就是收集依赖项,否则不建议使用它。
否则,如果您有测试,它们将在没有警告的情况下被跳过,这不是您想要的。
这两种解决方案都以编程方式抑制了警告消息。
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-jar-plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<!-- Ignore src/main in JAR packaging -->
<configuration>
<classesDirectory>src</classesDirectory>
<excludes>
<exclude>main</exclude>
</excludes>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
由于上述内容基本上创建了一个空的 JAR(并且我并不真的想包含测试类和测试资源),因此我选择“跳过”JAR 创建。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>default-jar</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)