zoukankan      html  css  js  c++  java
  • springboot使用maven打包实现resources分离和实现lib、resources分离

    jar包分离resources文件夹

    修改pom.xml文件

    <build>
            <!-- jar包名 -->
            <finalName>SearchIntegration</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <archive>
                            <!-- 指定配置文件目录,这样jar运行时会去找到同目录下的resources文件夹下查找 -->
                            <manifestEntries>
                                <Class-Path>resources/</Class-Path>
                            </manifestEntries>
                        </archive>
                        <!-- 打包时忽略的文件(也就是不打进jar包里的文件) -->
                        <excludes>
                            <exclude>**/**</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <!-- 复制资源文件 -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>copy-dependencies</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <!-- 资源文件输出目录 -->
                                <outputDirectory>${project.build.directory}/resources</outputDirectory>
                                <resources>
                                    <resource>
                                        <directory>src/main/resources</directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <!-- springboot repackage -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    上述执行打包后,会在target目录下生成jar包和resources文件夹,将jar包和resources文件夹复制到同一目录下

    执行运行jar包命令:java -jar xxx.jar 即可。

    jar包分离lib和resources

    <build>
            <!-- jar包名 -->
            <finalName>SearchIntegration</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <archive>
                            <!-- 指定配置文件目录,这样jar运行时会去找到同目录下的resources文件夹下查找 -->
                            <manifestEntries>
                                <Class-Path>resources/</Class-Path>
                            </manifestEntries>
                        </archive>
                        <!-- 打包时忽略的文件(也就是不打进jar包里的文件) -->
                        <excludes>
                            <exclude>**/**</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <!-- 复制资源文件 -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>copy-dependencies</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <!-- 资源文件输出目录 -->
                                <outputDirectory>${project.build.directory}/resources</outputDirectory>
                                <resources>
                                    <resource>
                                        <directory>src/main/resources</directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <!-- 分离lib  -->
                <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>
                                <!-- 依赖包输出目录 -->
                                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                                <excludeTransitive>false</excludeTransitive>
                                <stripVersion>false</stripVersion>
                                <!-- 依赖包的作用域 -->
                                <includeScope>runtime</includeScope>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <!-- springboot repackage -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <layout>ZIP</layout>
                        <addResources>true</addResources>
                        <includes>
                            <include>
                                <groupId>non-exists</groupId>
                                <artifactId>non-exists</artifactId>
                            </include>
                        </includes>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    对上述依赖包的作用域说明:

      在定义项目的依赖项的时候,我们可以通过scope来指定该依赖项的作用范围。scope的取值有compile、runtime、test、provided、system和import。
      compile:这是依赖项的默认作用范围,即当没有指定依赖项的scope时默认使用compile。compile范围内的依赖项在所有情况下都是有效的,包括运行、测试和编译时。
      runtime:表示该依赖项只有在运行时才是需要的,在编译的时候不需要。这种类型的依赖项将在运行和test的类路径下可以访问。
      test:表示该依赖项只对测试时有用,包括测试代码的编译和运行,对于正常的项目运行是没有影响的。
      provided:表示该依赖项将由JDK或者运行容器在运行时提供,也就是说由Maven提供的该依赖项我们只有在编译和测试时才会用到,而在运行时将由JDK或者运行容器提供。
      system:当scope为system时,表示该依赖项是我们自己提供的,不需要Maven到仓库里面去找。指定scope为system需要与另一个属性元素systemPath一起使用,它表示该依赖项在当前系统的位置,使用的是绝对路径。

    对maven的一些路径进行说明,这些都是内置属性(Maven预定义可以直接使用):

      ${basedir} 项目根目录 
      ${version}表示项目版本;
      ${project.basedir}同${basedir};
      ${project.version}表示项目版本,与${version}相同;
      ${project.build.directory} 构建目录,缺省为target
      ${project.build.sourceEncoding}表示主源码的编码格式;
      ${project.build.sourceDirectory}表示主源码路径;
      ${project.build.finalName}表示输出文件名称;
      ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes

    maven的一些命令:

      mvn clean 把target目录删掉
      mvn clean compile 编译项目至target目录
      mvn clean package 编译+打包 至target目录
      mvn clean install 编译+打包 至target目录 然后安装到本地仓库
      mvn clean deploy 上传jar包到远程仓库
      mvn javadoc:jar 打包javadoc文档
    如果需要将源码上传到远程仓库,则需deploy,然后再在pom文件中配置远程仓库的地址等信息。

     自动打包源码

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.0.1</version>
        <configuration>
            <attach>true</attach>
        </configuration>
        <executions>
            <execution>
                <phase>compile</phase> <!--指定绑定的声明周期阶段-->
                <goals>
                    <goal>jar</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
  • 相关阅读:
    Vue Router基础
    Bootstrap4入门
    React性能优化
    Koa,React和socket.io
    RN-进阶
    RN-入门基础
    RN-环境配置
    React高级指引
    React基础概念
    实现A-Z滑动检索菜单
  • 原文地址:https://www.cnblogs.com/Joe-Go/p/10830643.html
Copyright © 2011-2022 走看看