maven项目打包时引入外部jar包

最近在重构公司的老项目代码,将jar包通过maven管理,有些包不存在于maven仓库,所以要通过maven将本地jar打到最终的包中。

        <!--淘宝大鱼-->
        <dependency>
            <groupId>com.taobao</groupId>
            <artifactId>taobao-sdk-java-auto</artifactId>
            <systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1455552377940-20160816.jar</systemPath>
            <version>1455552377940-20160816</version>
            <scope>system</scope>
        </dependency>

pom文件的build节点下必须增加资源配置,否则jar不会打进去。

    <build>
        <resources>
            <resource>
                <directory>${project.basedir}/lib</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <targetPath>BOOT-INF/classes/</targetPath>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

其中各个标签含义:

  • dependency:每个dependency都对应一个jar包。
  • groupId:项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app
  • artifactId:构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个 特定的group ID下,artifact ID也必须是唯一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源 码,二进制发布和WARs等。
  • systemPath:系统路径
  • version:项目当前版本,格式为:主版本.次版本.增量版本-限定版本号
  • scope:maven认为,程序对外部的依赖会随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域(scope)的限制。scope包含如下的取值:compile(编译范围)、provided(已提供范围)、runtime(运行时范围)、test(测试范围)、system(系统范围)
  • ${project.basedir}:项目基础路径
  • build:构建项目需要的信息
  • resources:这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。
  • resource:这个元素描述了项目相关或测试相关的所有资源路径。
  • directory:描述存放资源的目录,该路径相对POM路径
  • targetPath:描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。举个例 子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven /messages。然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。
  • includes:包含的模式列表.
  • include:包含的模式,例如*/.xml.
  • plugins:使用的插件列表 。
  • plugin:plugin元素包含描述插件所需要的信息。

参考:
maven的pom.xml文件标签含义
maven项目打包时外部引入jar包无法打到项目中的解决方案
Spring Boot Maven项目使用SystemPath引用第三方平台遇到的大坑

转载于:https://www.jianshu.com/p/447920059af1

猜你喜欢

转载自blog.csdn.net/weixin_33896069/article/details/91258744