Maven 部署 + 源分类器

标签 maven maven-source-plugin

我正在尝试使用分类器部署 Maven Artifact 。由于我需要源代码和 JAR(我从 GWT 使用它),我想获得 artifact-version-classifier.jarartifact-version-classifier-sources.jar 。但是,它在编译后的 JAR 中运行良好,但在源中失败(输出源 JAR 的名称错误)。

这是我到目前为止的配置:

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <classifier>prod</classifier>
    </configuration>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <executions>
        <execution>
            <id>attach-sources</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <finalName>${project.build.finalName}-prod</finalName>
    </configuration>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <configuration>
        <classifier>prod</classifier>
    </configuration>
</plugin>

这是我为 mvn deploy 得到的输出:
Uploading: http://juicebox:8080/archiva/repository/snapshots//ar/com/nubing/afip-connector/1.0-SNAPSHOT/afip-connector-1.0-SNAPSHOT-prod.jar
237K uploaded  (afip-connector-1.0-SNAPSHOT-prod.jar)

但是这个名字有误:
Uploading: http://juicebox:8080/archiva/repository/snapshots//ar/com/nubing/afip-connector/1.0-SNAPSHOT/afip-connector-1.0-SNAPSHOT-sources.jar
228K uploaded  (afip-connector-1.0-SNAPSHOT-sources.jar)

最佳答案

遗憾的是,源插件不支持使用任意分类器附加源 JAR。当源 Artifact 是 attached 时,分类器是 hardcoded (从源插件的 2.1.2 版开始)。

您可以通过让源插件生成 JAR 但不附加,并将其附加到 build helper pluginattach artifact 目标来解决此问题。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <id>attach-source-jar</id>
            <phase>package</phase>
            <goals>
                <goal>attach-artifact</goal>
            </goals>
            <configuration>
                <artifacts>
                    <artifact>
                        <file>${project.build.directory}/${project.build.finalName}-prod-sources.jar</file>
                        <type>jar</type>
                        <classifier>prod-sources</classifier>
                    </artifact>
                </artifacts>
            </configuration>
        </execution>
    </executions>
</plugin>

关于Maven 部署 + 源分类器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8499266/

相关文章:

java - 如果检测到更改,如何使 Maven 自动重新编译?

java - 如何使用 deploy :deploy-file 使用 jar 部署源文件

Maven 发布 :perform failing to even try to generate javadoc or sources

java - 在 Maven 中生成源 jar 时排除包

android - Maven + RoboGuice + ActionBarSherlock + RoboGuice-Sherlock

java - 通过 apache poi 读取 excel 文件(位于类路径中)

android - 覆盖来自在 Android 中有翻译的模块/库的字符串资源

java - NoClassDefFoundError ForkedBooter