欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Maven将依赖包、jar/war包及配置文件输出到指定目录

程序员文章站 2022-12-29 14:49:51
通过利用Maven插件可以将依赖包、jar/war包及配置文件输出到指定目录 ......

目录

写在前面

​ 最近遇到一个朋友遇到一个项目需要将 maven 的依赖包和配置文件分开打包然后用脚本执行程序。这样的好处在于可以随时修改配置文件内容及查看 jar 包。如果将所有打成一个 jar 包就会有个问题(例如:修改数据库连接位置需要重新打包这样就失去了使用配置文件的有优点)。

本文利用maven插件将依赖包、jar/war包及配置文件输出到指定目录

1. 使用 maven-dependency-plugin 插件将依赖包导出到指定文件夹

<build>
    <plugins>
        <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-dependency-plugin</artifactid>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <!--${project.build.directory} class的输出目录不做设置的话默认代表项目根目录的target目录;
                            也可以使用“自定义文件夹/自定义文件夹 例如:a/b”,也可以使用绝对路径如:“d:\test” -->
                        <outputdirectory>${project.build.directory}/lib</outputdirectory>
                        <excludetransitive>false</excludetransitive>
                        <stripversion>false</stripversion>
                        <includescope>runtime</includescope>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

以下步骤将会省略掉build plugins节点

2. 使用 maven-war-plugin 插件将war打包到指定路径

打jar包时,与此类似

<plugin>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-war-plugin</artifactid>
    <configuration>
        <outputdirectory>d:\test</outputdirectory>
        <!--表示将所有的webapps项目下的文件拷贝到相应路径-->
        <webappdirectory>d:\test</webappdirectory>
    </configuration>
</plugin>

3. 使用 maven-jar-plugin 插件移除配置文件将其不打包进 jar 包中,并可以将打包后的 jar 包输出到指定路径

<plugin>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-jar-plugin</artifactid>
    <configuration>
      <!-- 指定打包的jar包输出路径-->
        <outputdirectory>
            ${project.build.directory}/lib
        </outputdirectory>   
        <!--不打入jar包的文件类型或者路径-->
        <excludes>
            <exclude>**/*.properties</exclude>
            <exclude>**/*.xml</exclude>
            <exclude>**/*.yml</exclude>
            <exclude>static/**</exclude>
            <exclude>templates/**</exclude>
        </excludes>
    </configuration>
</plugin>

4. 使用 maven-resources-plugin 插件将需要复制的文件复制到指定路径(例:将配置文件提取到指定路径)

<plugin>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-resources-plugin</artifactid>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>package</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <encoding>utf-8</encoding>
                <!--打成jar包后复制到的路径-->
                <outputdirectory>
                    ${project.build.directory}/conf
                </outputdirectory>  
                <resources>
                    <resource>
                        <!--项目中的路径-->
                        <directory>src/main/resources/</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
        <!--可配置多个提取复制路径只需要 “<id>”名字不一样即可-->
        <execution>
            <id>copy-bulid</id>
            <phase>package</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <encoding>utf-8</encoding>
                <outputdirectory>
                    ${project.build.directory}/bin
                </outputdirectory>   
                <resources>
                    <resource>
                        <directory>build/</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

使用 maven 命令执行打包命令

mvn clean package