Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven和POM.xml中的插件_Java_Maven_Maven 3_Pom.xml_Maven Plugin - Fatal编程技术网

Java Maven和POM.xml中的插件

Java Maven和POM.xml中的插件,java,maven,maven-3,pom.xml,maven-plugin,Java,Maven,Maven 3,Pom.xml,Maven Plugin,我刚开始使用Maven,我了解到插件是可以使用的附加组件。 pom.xml文件的典型结构是 <project> <groupId>org.koshik.javabrains</groupId> <artifactId>JarName</artifactId> (A fldernamed JarName was created) <version>1.0-SNAPSHOT</version> &l

我刚开始使用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>

在依赖项之前还是在
依赖项
标记之后?这有关系吗?

您可以在pom.xml文件的任意位置的两个
标记之间插入第二个代码片段。

应该放在
部分。
节的顺序并不重要


关于pom.xml的完整参考信息如下:

如果您想使用插件进行构建,可以使用以下结构

<project>
 <build>
  <plugins>
  </plugins>
 </build>
</project>

POM中的章节顺序无关紧要。一般来说,Maven中有构建插件和报告插件。您的案例是使用构建插件,因此您必须将此
块放入
..
部分

查看一些关于插件的基础知识。


<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>
org.koshik.javabrains JarName(创建了一个名为JarName的flderName) 1.0-快照 罐子 贾勒姆 http://maven.apache.org UTF-8 org.jibx jibxmaven插件 1.2.4 绑定 朱尼特 朱尼特 3.8.1 测试

如果使用maven配置文件,还可以在
部分放置插件。顺序无关紧要。

关于两个重要问题的最新澄清

在哪里放置
插件

构建
/
插件
部分中的大多数情况下,确实应该添加
插件
,但是将其放置在
插件
中与将其放置在
插件管理
/
插件
中有一个重要的区别

这种误解通常是Maven中未调用插件或更难排除故障的原因:

  • 构建下的插件
    /
    插件
    是默认Maven构建的直接组成部分,如果它们指定了执行
或者为默认构建配置了一些东西(见下文)
  • build
    /
    pluginManagement
    /
    Plugins
    下的插件不一定是默认Maven构建的一部分,也就是说,是一个管理,这是对Maven的提示:如果您碰巧使用了这个插件,那么请使用我在这里指定的版本、配置和执行,在这个管理中

    但是使用的方法是什么?意味着:如果相同的插件也出现在
    构建
    /
    插件
    部分中,则应用此管理(只有这样它才会有效)如果插件默认由Maven调用,那么也应用它

    但是默认情况下插件是如何调用的呢?这是maven背后主要理念的一部分:约定优先于配置。按照惯例,当您指定某个
    打包
    (默认
    jar
    ,但它可以是
    war
    ),您希望调用某些插件。要构建
    jar
    ,请调用
    maven-jar插件
    ;要构建
    war
    ,请调用
    maven-war插件
    ,依此类推。因此,如果您在
    build
    /
    pluginManagement
    /
    plugin
    中为具有默认绑定到Maven构建的插件指定插件配置,那么它也将被使用

  • 订购
    关于
    pom.xml
    文件中各节的顺序,需要进一步澄清:在大多数情况下确实是不相关的,但是
    构建
    /
    插件
    部分中
    插件
    元素的顺序可能很重要。由于Maven3.0.3(),附加到同一Maven阶段的不同插件执行将按照它们在
    pom.xml
    文件中的声明顺序被调用。也就是说,排序在这种情况下很重要,因为它可能会影响构建的行为

    此外,
    依赖项
    声明的顺序也可能会影响您的构建方向,也就是说,如果与可传递依赖项发生冲突,则第一个声明的依赖项获胜。因此,在某些情况下,排序同样重要

    最后但并非最不重要的一点是,尽管排序对于
    pom.xml
    文件的其他部分并不重要,但好的习惯是遵循官方规定,并且作为简化版本,遵循以下声明顺序:

    <project>
      <modelVersion/>
    
      <parent/>
    
      <groupId/>
      <artifactId/>
      <version/>
      <packaging/>
    
      <properties/>
    
      <dependencyManagement/>
      <dependencies/>
    
      <build/>
    
      <reporting/>
    
      <profiles/>
    </project>
    

    供进一步阅读


    作为报告插件(例如maven checkstyle插件)的补充答案,有两个标签,插件可以放在pom.xml中,即build和Reporting下

    使用reporting标记VS build标记

    在或元素中配置报告插件 在pom中没有相同的行为

    mvn站点

    它仅使用中定义的参数 元素中指定的每个报告插件的元素, i、 e.现场始终忽略在图纸中定义的参数 中指定的每个插件的元素

    mvn aplugin:areportgoal

    它首先使用元素中定义的参数 元素中指定的每个报告插件的名称;如果 未找到参数,它将查找中定义的参数 中指定的每个插件的元素


    资料来源:

    好的。你的意思是为了向上面的文件添加插件标签,我只需要添加..是的,你不需要再次添加项目
    <project>
      <modelVersion/>
    
      <parent/>
    
      <groupId/>
      <artifactId/>
      <version/>
      <packaging/>
    
      <properties/>
    
      <dependencyManagement/>
      <dependencies/>
    
      <build/>
    
      <reporting/>
    
      <profiles/>
    </project>
    
    mvn com.github.ekryd.sortpom:sortpom-maven-plugin:2.5.0:sort \
         -Dsort.keepBlankLines -Dsort.predefinedSortOrder=recommended_2008_06