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>
  • 相关阅读:
    HDU4628+状态压缩DP
    Javascript 去掉字符串前后空格的五种方法
    Javascript 数组之判断取值和数组取值
    ASP.NET MVC 出现错误 “The view 'XXX' or its master was not found or no view engine support”
    ASP.NET MVC 页面调整并传递参数
    ASP.NET MV3 部署网站 报"Could not load file or assembly ' System.Web.Helpers “ 错的解决方法
    ASP.NET MVC 控制器向View传值的三种方法
    CSharp 如何通过拼接XML调用存储过程来查询数据
    SQLServer : EXEC和sp_executesql的区别
    关于SQLServer2005的学习笔记—异常捕获及处理
  • 原文地址:https://www.cnblogs.com/Joe-Go/p/10830643.html
Copyright © 2011-2022 走看看