mvn jar依赖单独打包

吴书松
吴书松
发布于 2024-12-29 / 6 阅读
0

mvn jar依赖单独打包

1、在pom中添加配置

   <!-- 配置maven-jar-plugin,打包主程序jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <finalName>${project.artifactId}</finalName>
                    <archive>
                        <manifest>
                            <!-- 程序主类 -->
                            <mainClass>com.wss.demoa.DemoaApplication</mainClass>
                            <!-- 依赖库会放在 lib 文件夹下 -->
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                    </archive>
                    <excludes>
                        <exclude>mapper/**</exclude>
                        <exclude>static/**</exclude>
                        <exclude>templates/**</exclude>
                        <exclude>**/*.yml</exclude>
                        <exclude>**/*.xml</exclude>
                        <exclude>**/*.properties</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <!-- 配置maven-dependency-plugin,打包依赖jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>copy-dependencies-to-lib</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!-- 输出路径 -->
                            <!-- 依赖库复制 lib 文件夹下 -->
                            <outputDirectory>${project.build.directory}/lib/</outputDirectory>
                            <!-- 仅包含运行时所需 -->
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            
            
            <!-- 分离打包resources maven-resources-plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <!-- 指定resources文件 -->
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <!-- 分环境过滤开启 -->
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>application.yml</include>
                                        <!-- 分环境配置文件不用可删除 -->
                                        <!-- <include>application-${profiles.active}.yml</include> -->
                                    </includes>
                                </resource>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <!-- 分环境过滤关闭 -->
                                    <filtering>false</filtering>
                                    <includes>
                                        <include>templates/**</include>
                                        <include>static/**</include>
                                        <include>mapper/**</include>
                                        <include>freemark/**</include>
                                        <include>spy.properties</include>
                                    </includes>
                                </resource>
                            </resources>
                            <!-- 输出路径 -->
                            <outputDirectory>${project.build.directory}/lib/resources</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            

全pom配置

<build>
        <plugins>
            <!-- 配置maven-jar-plugin,打包主程序jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <finalName>${project.artifactId}</finalName>
                    <archive>
                        <manifest>
                            <!-- 程序主类 -->
                            <mainClass>com.wss.demoa.DemoaApplication</mainClass>
                            <!-- 依赖库会放在 lib 文件夹下 -->
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                    </archive>
                    <excludes>
                        <exclude>**/*.properties</exclude>
                        <exclude>**/*.xml</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <!-- 配置maven-dependency-plugin,打包依赖jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>copy-dependencies-to-lib</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!-- 依赖库复制 lib 文件夹下 -->
                            <outputDirectory>${project.build.directory}/lib/</outputDirectory>
                            <!-- 仅包含运行时所需 -->
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>


            <!-- 分离打包关键代码 maven-resources-plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <!-- 指定resources文件 -->
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <!-- 分环境过滤开启 -->
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>application.yml</include>
                                        <!-- 分环境配置文件不用可删除 -->
                                        <!-- <include>application-${profiles.active}.yml</include> -->
                                    </includes>
                                </resource>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <!-- 分环境过滤关闭 -->
                                    <filtering>false</filtering>
                                    <includes>
                                        <include>templates/**</include>
                                        <include>static/**</include>
                                        <include>mapper/**</include>
                                        <include>freemark/**</include>
                                        <include>spy.properties</include>
                                    </includes>
                                </resource>
                            </resources>
                            <!-- 输出路径 -->
                            <outputDirectory>${project.build.directory}/lib/resources</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>


<!--            <plugin>-->
<!--                <groupId>org.springframework.boot</groupId>-->
<!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
<!--            </plugin>-->
<!--            <plugin>-->
<!--                <groupId>io.fabric8</groupId>-->
<!--                <artifactId>docker-maven-plugin</artifactId>-->
<!--            </plugin>-->
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                    <exclude>**/*.xlsx</exclude>
                    <exclude>**/*.xls</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <includes>
                    <include>**/*.xlsx</include>
                    <include>**/*.xls</include>
                </includes>
            </resource>
        </resources>
    </build>

2、打包

3、结果

运行方式 java -Dloader.path="WEB-INF\lib"  -jar v2-0.0.1-SNAPSHOT.jar  
可以不指定,将lib放在和jar同级下