如何自动将所有相关的 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.

终于自己写了一个程序解决了这个问题

http://blog.csdn.net/guotong1988/article/details/50265463