从内部关系网发布到maven中心。

问题描述 投票:2回答:1

我有一个内部的nexus,其中包含了我们构建的所有工件。一旦一个工件经过测试,我想把这个正常的工件部署到Maven Central 不重样.

我知道,我也许可以用 mvn deploy:deploy-file 但似乎很复杂,有没有简单的方法?

注:由于历史原因,我们不使用SNAPSHOT版本。所有的版本都是以 artifact-name-X.Y.Z.jarX.Y.Z 是版本号。我们有一个内部的工具,可以查询理智性。

java maven nexus maven-central maven-deploy-plugin
1个回答
1
投票

我最后使用了类似他们这里的方法。https:/central.sonatype.orgpagesmanual-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调用了这个命令 I've invoked this command for the 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

最后但并非最不重要的是,因为我必须创建假的sources和javadoc jars,我只是取了一个jar,解压缩,在里面放了一个readme文件,而不是旧的内容,更新了manifest,然后再次压缩。然后我把它上传到了我的假sourcesjavadoc jars里。


0
投票

我假设你不仅有x.y.z版本的二进制文件,还有这个版本的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中加入profile。

<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>

这只是一个想法,不是我真正测试过的代码。但希望能帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.