如何在maven测试jar中仅包含某些测试包以及在非测试jar中包含所有非测试代码?

问题描述 投票:0回答:1

我有一个名为

synapse
的 Maven 模块。

main
  java
    package1
      A.java

test
  java
    common
      C.java
    package1
      ATest.java

有人可以告诉我,在maven中我是否可以创建一个包含所有非测试代码(

main/
)的不可执行jar和另一个仅包含包下代码
test-jar
test/java/common

我尝试了以下

<build>
  <plugins>
       <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
         <version>3.3.0</version>
         <configuration>
          <includes>
            <include>common/**</include>
          </includes>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
     </plugin>
  </plugins>
</build>

我观察到

test-jar
正在按预期创建,仅包含
test/java/common
中的代码,但不可执行、非测试 jar 不包含
main/java/package1
中的代码。

  • Maven 版本 - 3.8.4
  • Java 17
java maven maven-3
1个回答
0
投票

您的配置过滤器将应用于默认 jar 以及测试 jar。将您的配置移至执行范围:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>test-jar</goal>
                    </goals>
                    <configuration>
                        <includes>
                            <include>common/**</include>
                        </includes>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
© www.soinside.com 2019 - 2024. All rights reserved.