Maven 当使用分类器将工件发布到共享pom的GitHub包时,如何解决冲突?

Maven 当使用分类器将工件发布到共享pom的GitHub包时,如何解决冲突?,maven,pom.xml,github-package-registry,Maven,Pom.xml,Github Package Registry,tl;医生:我正在努力解决这个问题 我有一个项目,它构建了一个依赖于平台的JAR,并根据以下内容添加了一个分类器: 4.0.0 com.github.levyfan 句子 0.0.2 马文 os maven插件 1.6.1 maven jar插件 3.1.0 ${os.detected.classifier} 当我使用mvn--batch mode deploy构建artrifact并将其发布到GitHub包时,我遇到了一个冲突错误。这是因为工件共享一个pom(sentencepiece-0.

tl;医生:我正在努力解决这个问题

我有一个项目,它构建了一个依赖于平台的JAR,并根据以下内容添加了一个分类器:

4.0.0
com.github.levyfan
句子
0.0.2
马文
os maven插件
1.6.1
maven jar插件
3.1.0
${os.detected.classifier}
当我使用
mvn--batch mode deploy
构建artrifact并将其发布到GitHub包时,我遇到了一个冲突错误。这是因为工件共享一个pom(
sentencepiece-0.0.2.pom
),但JAR工件由
OSMaven插件
值(
sentencepiece-0.0.2-XYZ.JAR
)确定


如何在构建时注入此插件定义的属性以创建唯一的工件名称?

让我再试一次

插件生成的属性不能影响项目
artifactId
version
。要影响它们,属性必须在命令行中给出(或者直接在POM中给出)

所以我们只剩下分类器了

您需要在同一构建中使用分类器构建所有工件。因此,您需要以一次过为不同操作系统构建的方式更改构建。我不知道这是否可能(取决于您是否可以在Linux上为Windows构建),但这似乎是解决您问题的唯一“Maven方式”解决方案


当然,您仍然可以尝试一些技巧,比如在部署POM后删除POM,但如果可能的话,应该避免这种情况。

为什么需要分类器?因为它是特定于平台的JNI工件
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.levyfan</groupId>
<artifactId>sentencepiece</artifactId>
<version>0.0.2</version>


<build>
    <extensions>
        <extension>
            <groupId>kr.motd.maven</groupId>
            <artifactId>os-maven-plugin</artifactId>
            <version>1.6.1</version>
        </extension>
    </extensions>
    <!-- ... -->
    <plugins>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <classifier>${os.detected.classifier}</classifier>
            </configuration>
        </plugin>
    </plugins>
</build>