如何自动将所有相关的 class 收集到一个 jar 中(使用 maven)?
How to automatically collect all related class into one jar (use maven)?
我在 packageA 中有一个 class ClassA 并且 ClassA 在 packageB 中导入 ClassB。(实际上 ClassA 导入了很多 java 文件)
那么目录是:
root
pom.xml
src
packageA
classA
pom.xml
packageB
classB
我的目标是通过仅告诉 Maven 我输入 classA 来生成包含 classA 和 classB 的 jar。
根目录下的pom.xml如
<groupId>org.abc</groupId>
<artifactId>all-code</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>\src\packageA</module>
</modules>
<name>helloworld</name>
<dependencies>
<dependency>
</dependency>
</dependencies>
packageA目录下的pom.xml如
<parent>
<relativePath>..\..\</relativePath>
<artifactId>all-code</artifactId>
<groupId>org.abc</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>client-code</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>client</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>client</classifier>
<includes>
<include>packageB\*</include>
</includes>
</configuration>
</execution>
</executions>
</plugin> <!--it doesn't work-->
</plugins>
<sourceDirectory>.</sourceDirectory> <!--it works-->
</build>
错误信息是package does not exist
我在这里阅读了问题并尝试了。
Building a fat jar using maven
我认为 link 问题是为了实现提问者想要将外部罐子包含到一个罐子中。但是我想将我自己的 classB 包含到一个 jar 中,而我只输入 classA 到 maven,让 maven 找到 classB 因为 classA import classB.
终于自己写了一个程序解决了这个问题
我在 packageA 中有一个 class ClassA 并且 ClassA 在 packageB 中导入 ClassB。(实际上 ClassA 导入了很多 java 文件)
那么目录是:
root
pom.xml
src
packageA
classA
pom.xml
packageB
classB
我的目标是通过仅告诉 Maven 我输入 classA 来生成包含 classA 和 classB 的 jar。
根目录下的pom.xml如
<groupId>org.abc</groupId>
<artifactId>all-code</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>\src\packageA</module>
</modules>
<name>helloworld</name>
<dependencies>
<dependency>
</dependency>
</dependencies>
packageA目录下的pom.xml如
<parent>
<relativePath>..\..\</relativePath>
<artifactId>all-code</artifactId>
<groupId>org.abc</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>client-code</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>client</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>client</classifier>
<includes>
<include>packageB\*</include>
</includes>
</configuration>
</execution>
</executions>
</plugin> <!--it doesn't work-->
</plugins>
<sourceDirectory>.</sourceDirectory> <!--it works-->
</build>
错误信息是package does not exist
我在这里阅读了问题并尝试了。 Building a fat jar using maven 我认为 link 问题是为了实现提问者想要将外部罐子包含到一个罐子中。但是我想将我自己的 classB 包含到一个 jar 中,而我只输入 classA 到 maven,让 maven 找到 classB 因为 classA import classB.
终于自己写了一个程序解决了这个问题