Maven引用本地jar包以及打包发布注意事项
·
1、Maven引用本地jar包
- 首先在resources目录下创建名为【lib】的文件夹,然后将本地jar包放入该文件夹下,如图
- 然后在pom文件中引用该jar包
<dependency>
<groupId>org.openqa.selenium</groupId>
<artifactId>selenium-commons</artifactId>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/lib/selenium-commons-4.4.2.jar</systemPath>
<version>4.2.2</version>
</dependency>
2、maven编译时找不到本地引用的jar包
在maven编译完成后,运行jar包的时候报错找不到本地引用的jar包,需要在pom文件中build中的【spring-boot-maven-plugin】中加一段配置增加配置:
<build>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--maven编译时将本地引用的jar包一起打包-->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</build>
同步下maven后重新编译发现问题解决。
3、Maven将本地jar包添加到本地仓库【可被pom文件调用】
- 首先确保本地存在maven环境,然后进入settings文件查看setting配置本地仓库路径,入下图所示:
- 然后将本地jar包放到一个目录下
- 在文件路径输入cmd直接进入cmd控制台。
- 指定jar包在maven仓库的groupId,artifactId,version等信息:
<dependency>
<groupId>com.bw</groupId>
<artifactId>mqtt-producer</artifactId>
<version>1.1.2</version>
</dependency>
- 接着在cmd执行maven命令:
mvn install:install-file "-Dfile=mqtt-producer-1.1.2.jar" "-DgroupId=com.bw" "-DartifactId=mqtt-producer" "-Dversion=1.1.2" "-Dpackaging=jar"
看到SUCCESS则表示上传成功。
- 最后到 setting配置本地仓库路径下查看仓库是否添加成功
上图可以看到添加成功。最后pom文件刷新可看到本地仓库引用成功。
4、maven编译后将项目中用到的jar包拷贝到target某文件夹下
在pom中添加如下配置
<build>
<!--拷贝依赖到jar外面的lib目录-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-lib</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>target/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<!-- 生成的jar中,不要包含pom.xml和pom.properties这两个文件 -->
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<!-- 是否要把第三方jar加入到类构建路径 -->
<addClasspath>true</addClasspath>
<!-- 外部依赖jar包的最终位置 -->
<classpathPrefix>lib/</classpathPrefix>
<!-- 项目启动类 -->
<mainClass>com.saas.reptile.ReptileApplicatio</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</build>
maven编译后可以在target中看到生成的jar包,如下图:
5、maven编译打包时不编译项目中的依赖包
需要在pom文件中build中的【spring-boot-maven-plugin】中增加配置:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>ZIP</layout>
<!-- 注释后和依赖包一起打包 取消注释则不打包依赖-->
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
</plugin>
再配合上述的将项目中用到的jar包拷贝到target某文件夹下的【build】配置,将依赖包从项目jar包中完全抽离出来;
最后发布jar包的时候在jar包同级目录创建名为【lib】的文件夹,作为jar包外部依赖,如下图所示
6、maven编译打war包
- 首先在启动类中继承SpringBootServletInitializer类,并重写SpringApplicationBuilder的configure方法。
@SpringBootApplication
@ServletComponentScan
@EnableScheduling
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) {
return springApplicationBuilder.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
- 其次改动pom文件
首先将<packaging>改成【war】;
然后排除【spring-boot-starter-web】依赖包中的tomcat依赖;
最后加入【javax.servlet】依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
- 最后修改build
<build>
<!-- 打包后的服务名称 -->
<finalName>dsm</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--可以不用添加web.xml-->
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-deploy-plugin -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<!--deploy 时忽略 model-->
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
更多推荐
已为社区贡献5条内容
所有评论(0)