Raj*_*war 54 java maven-plugin pom.xml maven-3 maven
我刚开始使用Maven,我读到插件是可以使用的附加组件.
典型的pom.xml文件结构是
<project>
<groupId>org.koshik.javabrains</groupId>
<artifactId>JarName</artifactId> (A fldernamed JarName was created)
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>JarName</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)
问题:我应该在哪里插入plugin标签?如下:
<plugin>
<groupId>org.jibx</groupId>
<artifactId>jibx-maven-plugin</artifactId>
<version>1.2.4</version>
<executions>
<execution>
<goals>
<goal>bind</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
在依赖之前还是在dependency标记之后?有关系吗?
omn*_*nom 56
<project>
<groupId>org.koshik.javabrains</groupId>
<artifactId>JarName</artifactId> (A fldernamed JarName was created)
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>JarName</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.jibx</groupId>
<artifactId>jibx-maven-plugin</artifactId>
<version>1.2.4</version>
<executions>
<execution>
<goals>
<goal>bind</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)
您也可以将插件中<build>的部分<profile>,如果你使用Maven的配置文件.订单无关紧要.
A_D*_*teo 17
关于两个要点的最后澄清
在哪里放置plugin
一个plugin确实应该在大多数内的情况下被添加build/ plugins节,但有一个重要的区别将其置于内之间的plugins对抗将它内pluginManagement/ plugins.
这种误解通常是Maven中未调用插件的原因或更难以排除故障:
build/ 下的插件plugins直接是默认Maven构建的一部分,如果它们指定了一个execution或者它们是否为默认构建配置了什么(见下文)build/ pluginManagement/ 下的插件plugins不一定是默认Maven构建的一部分,也就是管理,它是maven的一个提示:你碰巧使用这个插件,然后请使用我在这里指定的版本,配置和执行,在这个管理中.
但是使用的意思是什么?意思是:如果/ section中也存在相同的插件,则应用此管理(只有这样才有效); 或者如果Maven默认调用插件,那么也应用它. buildplugins
但是默认情况下如何调用插件?这是maven背后的主要哲学的一部分:约定优于配置.按照惯例,当您指定某个packaging(默认jar,但可以是war)时,您希望调用某些插件.要构建一个jar,默认调用maven-jar-plugin; 构建一个war,默认情况下调用maven-war-plugin等等.因此,如果您在build/ pluginManagement/中plugin为插件指定了一个插件配置,该插件具有与Maven构建的默认绑定,那么它也将被使用.
订购
关于内部分的顺序pom.xml文件,进一步明确要求:它确实无关紧要在大多数的情况下,但是顺序plugin元素wihtin的build/ plugins部分可能是重要的.从Maven 3.0.3(MNG-2258)开始,附加到同一Maven阶段的不同插件执行将按照pom.xml文件中的声明顺序调用.也就是说,在这种情况下排序很重要,因为它可能会影响构建的行为.
此外,dependency声明顺序也可能影响您对依赖性中介的构建,也就是说,在与传递依赖冲突的情况下,第一个声明的依赖性获胜.因此,在某些情况下,订购再次非常重要.
最后但并非最不重要的是,尽管排序对pom.xml文件的其他部分并不重要,但良好的习惯是遵循官方的Maven建议,并且作为简化版本,遵循以下声明顺序:
<project>
<modelVersion/>
<parent/>
<groupId/>
<artifactId/>
<version/>
<packaging/>
<properties/>
<dependencyManagement/>
<dependencies/>
<build/>
<reporting/>
<profiles/>
</project>
Run Code Online (Sandbox Code Playgroud)
该sortpom-maven-plugin还可以用于自动应用此标准排序,简单地调用就关注以下pom.xml文件:
mvn com.github.ekryd.sortpom:sortpom-maven-plugin:2.5.0:sort \
-Dsort.keepBlankLines -Dsort.predefinedSortOrder=recommended_2008_06
Run Code Online (Sandbox Code Playgroud)
进一步阅读:
<plugin>应放入<plugins>部分,其应被放置到<build>或<pluginManagement>部分。<dependency>或<build>部分的顺序无关紧要。
有关pom.xml的完整参考资料在这里:http : //maven.apache.org/pom.html
| 归档时间: |
|
| 查看次数: |
71500 次 |
| 最近记录: |