使用 Maven 和包含类子集的 jar 构建 war

Jac*_*cob 5 maven

默认情况下,我正在以标准方式构建一场战争。

但是,出于遗留原因,我还需要将 java 类集合导出到 JAR 中以进行共享。是否有捷径可寻?

更新: 为了澄清,除了默认的 WAR 输出和布局之外,我还需要一个包含以下内容的 JAR:

{project.base}/src/main/java*
{project.base}/src/main/resources/META-INF/services/*
Run Code Online (Sandbox Code Playgroud)

tro*_*oig 5

您可以使用maven-jar-plugin来完成此操作。

保留<packaging>war</packaging>and maven-war-plugin(如果您已在 pom 中定义)并将其添加maven-jar-plugin到您的<build>配置中,定义您的自定义类包含/排除。

A排除类和构建的 jar 包中的所有类的示例pkg

   ...
   <packaging>war</packaging>
   ...
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            ...
         </plugin>

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
               <execution>
                  <phase>package</phase>
                  <goals>
                     <goal>jar</goal>
                  </goals>
                  <configuration>
                     <excludes>
                        <exclude>A.class</exclude>
                        <exclude>pkg/**</exclude>
                     </excludes>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
Run Code Online (Sandbox Code Playgroud)

作为输出,当您使用 maven 构建项目时,您的输出目录中将有 awar和 a (不包括排除的类)。jar

希望能帮助到你