最近工作中遇到了特殊的开发环境,没有编译器idea,只有mvn和jdk,需要把maven项目打包成带依赖的jar包后,通过java -jar运行。在这里分享一下过程中遇到的问题和解决方法。
配置pom文件
主要是为了:
1、配置一个打包插件。
2、设置一个程序入口,不然会报错:找不到主类。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib</classpathPrefix>
<!--设置程序入口,路径从java文件夹后面开始算-->
<mainClass>Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<!--带依赖打包-->
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
配置完pom文件后,可以运行mvn package assembly:single,进行打包,打包完成后运行java -jar ***.lib运行lib包。
jar包加入本地maven仓库
一开始配了个本地依赖在pom里(如下代码),mvn package assembly:single会把本地仓库依赖打到一个jar包里,本地依赖打成单独的lib包,会导致运行不到本地依赖。
<dependency>
<groupId>mysql</groupId>
<artifactId>dabai-connector-java</artifactId>
<version>1.1.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/dabai-connector-java-1.1.1.2.jar</systemPath>
</dependency>
解决方法:把本地依赖加入到本地仓库中。
操作流程:到jar包所在文件夹内,mvn install:install-file -Dfile=dabai-connector-1.1.1.2.jar -DartifactId=dabai-connector -DgroupId=dabai.connector -Dversion=1.1.1 -Dpackaging=jar。其中DartifactId、DgroupId、Dversion都是自己定的。
install-file -Dfile:jar包名
DartifactId:对应pom文件中<artifactId>的值
DgroupId:对应pom文件中<groupId>的值
Dversion:对应pom文件中<version>的值
Dpackaging:打包方式,jar方式