默认情况下,我正在以标准方式建立战争。
但是,由于遗留原因,我还需要将一组java类导出到JAR以进行共享。有一个简单的方法吗?
更新 为了澄清,除了默认的WAR输出和布局之外,我还需要一个包含以下内容的JAR:
{project.base}/src/main/java*
{project.base}/src/main/resources/META-INF/services/*
答案 0 :(得分:2)
您可以使用maven-jar-plugin执行此操作。
保留<packaging>war</packaging>
和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>
作为输出,当您使用maven构建项目时,输出目录中将有war
和jar
(不包括排除类)。
希望有所帮助
答案 1 :(得分:1)
最简单的解决方案是使用maven-war-plugin以及maven-war-plugin out of the box支持的适当配置:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version>
<configuration>
<attachClasses>true</attachClasses>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
上述配置将创建一个补充工件,其中包含src/main/java
:
<dependency>
<groupId>myGroup</groupId>
<artifactId>myArtifact</artifactId>
<version>myVersion</myVersion>
<classifier>classes</classifier>
</dependency>
您可以在其他项目中使用。