最近发现项目中pom比较混乱,接口包打包方式不规范,且不带源码。汇总下相关mvn配置方式。
接口包,其他SDK性质的包构建方式:
1.普通的Jar包,只含本工程源码编译后文件
2.源码包,方便依赖方使用
服务实现包的构建方式:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
<!--源码打包配置-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
在Spring Cloud环境下,使用springboot构建插件生成可执行包。
<build>
<plugins>
<!--可执行包配置-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
一个模块有一个父pom,其下有接口pom和服务实现pom。部门级有一总pom。
常遇到的一个错误:
“ Unable to find main class” 本来是一个接口包或者是一个普通的jar,不需要Main方法,但是打包总是报错找不到Main。原因是spring-boot-maven-plugin这个打包插件打包时必须有Main方法,解决方案是直接去掉,默认是打普通jar包,或者配置Apache的maven构建插件。