繁体   English   中英

从内部链接发布到 maven 中央

[英]Publish from internal nexus to maven central

我有一个内部联系,其中包含我们构建的所有工件。 测试工件后,我想获取正常的工件并将其部署到 Maven Central而不重建它

我知道我可以使用mvn deploy:deploy-file来做到这一点,但它似乎很复杂。 有没有简单的方法来做到这一点?

注意:由于历史原因,我们不使用 SNAPSHOT 版本。 所有版本都采用artifact-name-XYZjar的样式,其中XYZ是版本号。 我们有一个可以查询理智的内部工具。

我已经结束使用类似于他们在这里的方法: https://central.sonatype.org/pages/manual-staging-bundle-creation-and-deployment.html

所以,如果我有以下文件:

ossrh-test-1.2.pom
ossrh-test-1.2.jar
ossrh-test-1.2-javadoc.jar
ossrh-test-1.2-sources.jar

我已经为 JAR 调用了这个命令:

mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=ossrh-test-1.2.pom -Dfile=ossrh-test-1.2.jar

源代码和 JavaDocs 的以下命令:

mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=ossrh-test-1.2.pom -Dfile=ossrh-test-1.2-sources.jar -Dclassifier=sources
mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=ossrh-test-1.2.pom -Dfile=ossrh-test-1.2-javadoc.jar -Dclassifier=javadoc

最后但并非最不重要的一点是,由于我必须创建假源和 javadoc jars,所以我刚刚获取了 jar,将其解压缩,将自述文件放入其中而不是旧内容,更新清单并再次压缩它。 然后我将它作为我的假来源/javadoc jars 上传。

让我假设你不仅有 xyz 版本的二进制文件,还有这个版本的 scm 标签。

如果是这样,您可以尝试以下 CI 工作:

<scm> checkout <YOUR TAG>
<scm> clean -d -x -f

mvn maven-dependency-plugin:get -Pcustom-deployment -DexecutionId=resolve-sane-binaries
mvn maven-deploy-plugin:deploy -Pcustom-deployment -DexecutionId=deploy-sane-binaries

在您的 pom.xml 中使用配置文件:

<profiles>
    <profile>
        <id>custom-deployment</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>3.1.2</version>
                    <executions>
                        <execution>
                            <id>resolve-sane-binaries</id>
                            <goals>
                                <goal>get</goal>
                            </goals>
                            <configuration>
                                <artifactItems>
                                    <artifactItem>
                                        <groupId>${project.groupId}</groupId>
                                        <artifactId>${project.artifactId}</artifactId>
                                        <version>${project.version}</version>
                                        <type>${project.packaging}</type>
                                        <outputDirectory>${project.build.directory}</outputDirectory>
                                        <destFileName>${project.build.finalName}</destFileName>
                                    </artifactItem>
                                    ...
                                </artifactItems>
                                ...
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                    <executions>
                        <execution>
                            <id>deploy-sane-binaries</id>
                            <goals>
                                <goal>deploy-file</goal>
                            </goals>
                            <configuration>
                                ...
                            </configuration>
                        </execution>
                    <executions>
                <plugin>
            </plugins>

这只是一个想法,而不是我真正测试过的代码。 但希望它会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM