一、新建一个普通maven project做为父项目
删除掉所有文件、文件夹和库,只留下pom.xml
修改pom.xml文件,把pacakage改成pom
<packaging>pom</packaging>
修改pom.xml文件后,项目上有错的话,可以试试右击maven》update project。
二、新建maven module
打开pom.xml的overview方式,点击create
三、第一次打包时要用父项目的pom.xml打包。多个子项目分开打包时一定要按依赖关系的顺序打包。
四、maven开发分布式项目
ch-zdemo-dubbo-app打包成jar部署到应用服务器,
ch-zdemo-dubbo-web打包成war部署到web服务器,
ch-zdemo-dubbo-service公共业务层接口
ch-zdemo-dubbo-bean公共实体类包
ch-zdemo-dubbo-common其它公共类包
ch-zdemo-dubbo-core公共核心包
ch-zdemo-dubbo-mapper公共持久层接口包
ch-zdemo-dubbo-utils公共工具类包
其中ch-zdemo-dubbo-app需要打包成jar部署到应用服务器,在app项目的pom.xml里加上使用打包插件,把所有的依赖的jar都打包进来,配置如下:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include><!-- 主要是mapper.xml文件 -->
</includes>
</resource>
<resource>
<directory>src/main/resources</directory><!-- 配置文件 -->
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source><!-- 源代码使用的开发版本 -->
<target>1.7</target><!-- 需要生成的目标class文件的编译版本 -->
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.chhuang.application.App</mainClass><!-- 带main方法的类 -->
</transformer>
<!-- 以添加的方式写入spring.handlers和spring.schemas -->
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
<filters>
<!-- 过滤掉多余的.SF .DSA .RSA文件 -->
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<finalName>ch-zdemo-dubbo-app</finalName>
</build>
配置完pom后,调用mvn clean install命令进行构建,构建成功后打开工程target目录,发现生成了2个jar包,一个为:original-XXX.jar,另一个为:XXX.jar,其中original.jar里只包含了工程自己的class文件,而另外的一个jar包则包含了工程本身以及所有依赖的jar包的class文件。我们只需要使用第二个jar包就可以了。