Maven在現(xiàn)在的開發(fā)中可以說是無處不用,至少對于我個人來說是比不可少的畅蹂,當(dāng)然gradle也是不錯的像啼,今天就來總結(jié)以下Maven的一些對我來說比較特殊的用法:
子Module用法注意點
-
如果一個Maven項目中有許多的Module子模塊, 那么在主Web項目中添加子模塊的依賴, 這樣在主項目打包的時候, 子模塊也會被打包, 步驟:
- 添加maven-war-plugin插件, 并在其中添加子模塊的坐標(biāo):
<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標(biāo)簽中添加對應(yīng)項目的dependency即可;
- 添加maven-war-plugin插件, 并在其中添加子模塊的坐標(biāo):
-
但是會有一個問題, 一般的我們的項目依賴都是依賴一個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的源默認的都是國外的谱邪,如果需要大量下載的話邀杏,速度相對來說還是比較慢的,在陪配置文件中把源配置切換到國內(nèi)的阿里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文件夾中的文件(驗證得來)