MAVEN 引入外部包,并打包时引入外部JAR

最近做一个钉钉项目,引用官方的jar包,taobao-sdk-java-auto_1479188381469-20190926.jar

需要项目引入外部包,而不是直接依赖引入maven库

1,在项目下建立个LIB目录,把下载的包放进入,如下:

   MAVEN 引入外部包,并打包时引入外部JAR

2,POM.XML文件引入本地包;

<dependency>
    <groupId>com.dingtalk.open</groupId>
    <artifactId>taobao-sdk-java</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1479188381469-20190926.jar</systemPath>
</dependency>

3,打包build下修改

<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>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

 

这样maven打包后即可把本地JAR打进去了

MAVEN 引入外部包,并打包时引入外部JAR

 

其中各个标签含义:

  • 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元素包含描述插件所需要的信息。