如何使用maven pom.xml为特定的java包创建jar

时间:2016-04-27 06:28:53

标签: spring maven jar pom.xml

我是maven的新手,请你帮我提供一个示例pom文件,介绍如何为我的spring项目创建一个属于特定包的jar文件。

以下是我的两个包

com.net.foo

com.org.bar

我想单独为包 com.org.bar 创建jar文件,名称为 org.jar

你能帮忙解决一下这个问题吗?

由于

2 个答案:

答案 0 :(得分:1)

由于你是maven的新手,我应该告诉你每个maven模块(每个pom.xml)应该生成一个jar。从单个pom.xml生成两个jar是一种反模式。您可能想要创建一个多模块maven。

在这种情况下,您使用

创建父pom.xml
<packaging>pom</packaging>

并且包括两个maven项目

<modules>
    <module>foo</module>
    <module>bar</module>
</modules>

现在你可以用一个构建来构建两个jar,但每个都是它自己的maven项目,这是正确的模式。

话虽如此,如果你真的想用包裹分开,我想你可以使用它:

https://maven.apache.org/plugins/maven-jar-plugin/examples/include-exclude.html

但你不能简单地重复两次maven-jar-plugin。你必须创建2个配置文件或2个执行来强制maven运行jar插件两次。最简单的是创建2个执行。请参阅下面的代码。

现在,关于如何命名生产的jar,你需要在maven-jar-plugin上设置finalName配置

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <finalName>myJar</finalName>                   
    </configuration>
</plugin>

全部放在一起:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>

                <execution>
                    <id>foo</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <phase>package</phase>
                    <configuration>
                        <finalName>foo</finalName>
                        <includes>
                            <include>**/foo/*</include>
                        </includes>
                    </configuration>
                </execution>

                <execution>
                    <id>bar</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <phase>package</phase>
                    <configuration>
                        <finalName>bar</finalName>
                        <includes>
                            <include>**/bar/*</include>
                        </includes>
                    </configuration>
                </execution>

            </executions>
        </plugin>
    </plugins>
</build>

请注意,如果您遵循此方法,生成的jar文件不会自动视为项目工件,因此您需要执行其他工作来将它们安装/部署为maven工件。我强烈建议你采用多模块方法。

答案 1 :(得分:0)

您需要使用 maven-jar-plugin

使用示例:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <executions>
        <execution>
            <id>default-jar</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <excludes>
                    <exclude>**/bar/**</exclude>
                </excludes>
            </configuration>
        </execution>
    </executions>
</plugin>