Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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放在JAR文件中的POM文件的意义是什么,它被任何东西使用了吗?_Java_Maven 2_Jar_Pom.xml - Fatal编程技术网

Java Maven放在JAR文件中的POM文件的意义是什么,它被任何东西使用了吗?

Java Maven放在JAR文件中的POM文件的意义是什么,它被任何东西使用了吗?,java,maven-2,jar,pom.xml,Java,Maven 2,Jar,Pom.xml,当Maven构建JAR文件时,它会将模块的POM文件放在其中(似乎位于目录/) 当我从Ant构建要通过Maven Ant任务部署的JAR文件时,这个POM文件(JAR中的那个)的存在是否重要?它似乎不是,但我只是想确保它没有在任何地方使用,并确认它应该在JAR文件中的确切位置。JAR中的pom.xml设计用于以下目的 自动依赖项解析 JAR的部署。可以自动从JAR中提取pom.xml 存储库的完整性检查(JAR匹配POM) 我不知道这些功能是否在任何地方实现。您当然可以忽略它。将pom.xml和

当Maven构建JAR文件时,它会将模块的POM文件放在其中(似乎位于目录/)


当我从Ant构建要通过Maven Ant任务部署的JAR文件时,这个POM文件(JAR中的那个)的存在是否重要?它似乎不是,但我只是想确保它没有在任何地方使用,并确认它应该在JAR文件中的确切位置。

JAR中的pom.xml设计用于以下目的

  • 自动依赖项解析
  • JAR的部署。可以自动从JAR中提取pom.xml
  • 存储库的完整性检查(JAR匹配POM)

  • 我不知道这些功能是否在任何地方实现。您当然可以忽略它。

    pom.xml
    pom.properties
    文件打包在JAR中,这样Maven生成的每个工件都是自描述的,如果需要,还允许您在自己的应用程序中使用元数据。一个简单的用途可能是检索应用程序的版本

    也就是说,如果需要,可以通过MavenArchiverConfiguration禁用这些文件的包含,MavenArchiverConfiguration允许一个布尔参数,并且不包含它们是安全的(即使我觉得拥有它们很好)。例如,对于JAR:

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
              <archive>
                <addMavenDescriptor>false</addMavenDescriptor>
              </archive>
            </configuration>
          </plugin>
        </plugins>
        ...
      </build>
      ...
    </project>
    
    
    ...
    org.apache.maven.plugins
    说:

    生成的归档文件是否包含以下两个Maven文件:

    • pom文件,位于
      META-INF/maven/${groupId}/${artifactId}/pom.xml中的存档中
    • 一个文件,位于
      META-INF/maven/${groupId}/${artifactId}/pom.properties中的归档文件中
    默认值为true


    这应该可以回答您的问题。

    “pom.xml和pom.properties文件打包在JAR中,这样Maven生成的每个工件都是自描述的,并且允许您在需要时在自己的应用程序中使用元数据。”-你能举例说明为什么我的应用程序需要pom文件中的元数据吗?例如,当你不想将jar发布到在线mvn repo时,你可以将jar文件单独提供给其他人,他们可以使用mvn安装插件3.0.0-M1安装到本地mvn repo并使用它。maven会知道这个本地安装的jar的正确依赖项,如果没有pom.xml,这是不可能的。