Maven在现在的开发中可以说是无处不用,至少对于我个人来说是比不可少的,当然gradle也是不错的,今天就来总结以下Maven的一些对我来说比较特殊的用法:
子Module用法注意点
-
如果一个Maven项目中有许多的Module子模块, 那么在主Web项目中添加子模块的依赖, 这样在主项目打包的时候, 子模块也会被打包, 步骤:
- 添加maven-war-plugin插件, 并在其中添加子模块的坐标:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <overlays> <overlay> <groupId>$<sub-module-groupId></groupId> <artifactId>$<sub-module-artifactId></artifactId> </overlay> <!-- ... --> </overlays> </configuration> </plugin>
- 添加这个以后会报错:
overlay [id <sub-module-artifactId>] is not a dependency of the project blog
, 那么在dependencies标签中添加对应项目的dependency即可;
- 添加maven-war-plugin插件, 并在其中添加子模块的坐标:
-
但是会有一个问题, 一般的我们的项目依赖都是依赖一个jar, 但是子模块是一个一个的大模块, 很有可能是一个war, 解决:
- 在子模块为war的pom中添加以下plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <!-- 把war项目的类打包成jar包 --> <attachClasses>true</attachClasses> <classesClassifier>api</classesClassifier> </configuration> </plugin>
- 在主Web项目的POM中的dependency中添加type和classesClassifier, 如下
<type>jar</type> <classifier>api</classifier>
- 在子模块为war的pom中添加以下plugin
Install项目的时候加载项目中分散的资源文件
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
配置阿里云的Maven源
Maven的源默认的都是国外的,如果需要大量下载的话,速度相对来说还是比较慢的,在陪配置文件中把源配置切换到国内的阿里Maven源:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
给Maven配置实用指定的JDK编译项目
<profile>
<id>jdk‐1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
补充Maven的两点使用注意事项:
1, maven package 不会把jar、war、pom安装到本地仓库,install相反
2, Maven运行的时候,使用的是本地仓库的包,不是Maven项目中Target文件夹中的文件(验证得来)