代码之家  ›  专栏  ›  技术社区  ›  Dan Dyer

Maven将pom文件放在jar文件中的意义是什么,它是否被任何东西使用?

  •  17
  • Dan Dyer  · 技术社区  · 15 年前

    当Maven构建JAR文件时,它会将模块的pom文件放在里面(似乎位于目录<groupid>/<artifactid>)。

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

    2 回复  |  直到 8 年前
        1
  •  16
  •   Pascal Thivent    15 年前

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

    也就是说,如果需要,可以通过允许布尔值的mavenarchivorconfiguration禁用这些文件的包含。 addMavenDescriptor 参数 不包括他们是安全的 (即使我觉得很高兴拥有它们)。例如,对于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>
    

    关于这些文件的位置, AddMavenDescriptor 说:

    生成的存档是否包含这两个maven文件:

    • pom文件,位于 META-INF/maven/${groupId}/${artifactId}/pom.xml
    • A pom.properties 文件,位于 META-INF/maven/${groupId}/${artifactId}/pom.properties

    默认值为true。

    这应该能回答你的问题。

        2
  •  3
  •   ZZ Coder    15 年前

    jar中的pom.xml是为以下目的而设计的,

    1. 自动依赖项解析。
    2. JAR的部署。可以从jar中自动提取pom.xml。
    3. 由存储库进行完整性检查(JAR与POM匹配)。

    我不知道这些特性是否在任何地方实现。你当然可以忽略它。