maven中如何打包源代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven中如何打包源代码相关的知识,希望对你有一定的参考价值。

1、The source plugin can be used to create a jar file of the project sources from the command line or by binding the goal to the project's build lifecycle. To generate the jar from the command line, use the following command:运行后会在target目录中找到生成的源文件jar包。2、在pom.xml中添加:<build<plugins<plugin<artifactIdmaven-source-plugin</artifactId<version2.1</version<configuration<attachtrue</attach</configuration<executions<execution<phasecompile</phase<goals<goaljar</goal</goals</execution</executions</plugins</build配置中指定了phase为compile,意思是在生命周期compile的时候就将源文件打包,即只要执行的mvn命令包括compile这一阶段,就会将源代码打包。同样,phase还可以指定为package、install等等。 参考技术A 在pom.xml中添加:
<build>
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.1</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置中指定了phase为compile,意思是在生命周期compile的时候就将源文件打包,即只要执行的mvn命令包括compile这一阶段,就会将源代码打包。同样,phase还可以指定为package、install等等。

关于使用maven打包如何聚合资源文件

多数情况下,我们使用maven管理多个子工程,在最后maven打包阶段将多个子工程聚合到一个jar或war包。单个子工程会有自己独立的资源配置文件,在打包的时候我们需要将其聚合在一起(各子工程中的配置文件名称不能重复)。下面提供两种方法:

1.使用maven-resources-plugin插件,下面提供代码示例:

<build>
        <finalName>${projectName}</finalName>
        <plugins>
        <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.5</version>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>process-sources</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${basedir}/target/classes/</outputDirectory>
                            <resources>
                                <!-- 将app.framecore中的配置文件复制到该宿主工程中 -->
                                <resource>
                                    <directory>${basedir}/../../app.framecore/src/main/resources</directory>
                                    <includes>
                                        <include>**/*.sql</include>
                                        <include>**/*.xml</include>
                                        <include>**/*.properties</include>
                                    </includes>
                                </resource>
                            <!-- 将app.pms.cust.api中的配置文件复制到该宿主工程中 -->
                                <resource>
                                    <directory>${basedir}/../app.pms.cust.api/src/main/resources</directory>
                                    <includes>
                                        <include>**/*.sql</include>
                                        <include>**/*.xml</include>
                                        <include>**/*.properties</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <compilerArgument>-parameters</compilerArgument>
                    <source>1.8</source>
                    <target>1.8</target>
                    <!-- true:跳过测试 -->
                    <skip>true</skip>
                    <encoding>${maven.compiler.encoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.直接在build节点中配置resources节点。如下代码所示:

<build>
        <resources>
            <resource>
                <targetPath>${basedir}/target/classes/</targetPath>
                <directory>${basedir}/../../app.framecore/src/main/resources</directory>
                <includes>
                    <include>**/*.sql</include>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
            <resource>
                <targetPath>${basedir}/target/classes/</targetPath>
                <directory>${basedir}/../app.pms.cust.api/src/main/resources</directory>
                <includes>
                    <include>**/*.sql</include>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
   ...
</build>

不过这里需要注意的是,一旦在build中指定了resources节点,必须自己手动添加所有待整合的资源文件。因为指定了resources,maven在打包时将严格按照用户指定的resources处理资源文件。所以这里推荐方法1.

以上是关于maven中如何打包源代码的主要内容,如果未能解决你的问题,请参考以下文章

如何把github上下载下来的maven源代码zip文件打包成可运行的jar文件

关于使用maven打包如何聚合资源文件

maven工程编译并生成可执行JAR包命令

idea中写的代码不打包怎么能直接运行

maven打包版本号问题

Maven打包没将Kotlin源代码打包进aar /* compiled code */