【问题标题】:How do I write a POM file for a jar for Maven Install?如何为 Maven 安装的 jar 编写 POM 文件?
【发布时间】:2016-04-21 06:24:17
【问题描述】:

我有一组罐子,yanfs.jaryanfs-javadoc.jaryanfs-sources.jar。这些是 Maven 无法解析的第三方 jar。

我计划使用 Maven 安装命令:

mvn install:install-file -Dfile=path -DpomFile=path

将 jars 添加到我的 maven 存储库中,以便我可以在我的代码中使用它。

我只是不知道如何为 jar 编写 pom 文件,因此至少源 jar 与标准 jar 文件一起包含。

这是我目前所拥有的:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.sun</groupId>
    <artifactId>yanfs</artifactId>
    <version>1.2</version>
    <description>Artifactory auto generated POM</description>
</project>

还有其他人知道我还需要包括什么吗?

【问题讨论】:

标签: java maven jar pom.xml


【解决方案1】:

您无法知道在这里写什么。 POM 是绑定到您所依赖的项目的文件。如果这个项目没有随它分发 POM 文件,你可能不走运。该文件应该包含工件的所有传递依赖项,但也包含许多其他内容,例如其许可。你无法弥补。

您可以查看yanfs.jar 内部是否有嵌入的 POM 文件。如果有的话,它应该在META-INF/maven/{groupId}/{artifactId} 下,您不需要告诉maven-install-plugin,因为在安装过程中it will find it automatically

如果 JAR 是由 Apache Maven 构建的,它将在 META-INF 目录的子文件夹中包含一个 pom.xml,默认情况下会读取该文件。

否则,除了在generatePom 属性的帮助下让maven-install-plugin generate a POM 之外,您真的无能为力。请注意,您当前拥有的 POM 也可能是在您上传时由您的 Artifactory 服务器(根据其内容)生成的。

关于yanfs-javadoc.jaryanfs-sources.jar 的其他工件,您可以使用javadocsources 属性告诉maven-install-plugin

你会得到以下命令:

mvn install:install-file -Dfile=yanfs.jar -Dsources=yanfs-sources.jar -Djavadoc=yanfs-javadoc.jar

【讨论】:

    【解决方案2】:

    我建议不要费心创建 pom 文件,而是让 Maven 为您安装它并为它们找出 pom.xml。

    您想要的一个关键属性是classifier

    mvn install:install-file -Dfile=yanfs.jar -DartifactId=yanfs -DgroupId=com.sun -Dversion=0.0.1
    mvn install:install-file -Dfile=yanfs-javadoc.jar -DartifactId=yanfs -DgroupId=com.sun -Dversion=0.0.1 -Dclassifier=javadoc
    mvn install:install-file -Dfile=yanfs-sources.jar -DartifactId=yanfs -DgroupId=com.sun -Dversion=0.0.1 -Dclassifier=sources
    

    您可以在一行中执行的另一种方法是使用 sourcesjavadoc 属性:

    mvn install:install-file -Dfile=yanfs.jar \
        -Djavadoc=yanfs-javadoc.jar \
        -Dsources=yanfs-sources.jar \
        -DartifactId=yanfs -DgroupId=com.sun -Dversion=0.0.1
    

    install:install-file 页面显示所有可能的选项。

    【讨论】:

      【解决方案3】:

      您可能希望在您的 pom 中添加一个“构建”部分,并根据您的喜好包含 maven-source-plugin[1] 和 maven-jar-plugin[2] 以及一些配置。

      [1]https://maven.apache.org/plugins/maven-source-plugin/usage.html

      [2]https://maven.apache.org/plugins/maven-jar-plugin/usage.html

      编辑:我误解了你的问题,我以为你试图通过从源代码本地构建它们并使用 maven 构建它们来对这些 3rd 方依赖项进行 maven-ify,以便生成项目使用所需的元数据。如果这些依赖项是开源的,那么这是解决您问题的潜在选择。

      【讨论】:

        猜你喜欢
        • 2015-05-15
        • 2014-07-29
        • 1970-01-01
        • 1970-01-01
        • 2013-12-16
        • 2013-01-02
        • 1970-01-01
        • 1970-01-01
        • 2014-12-03
        相关资源
        最近更新 更多