相关疑难解决方法(0)

如何手动将JAR发布到maven central?

我创建了一个开源项目,我想将其发布到maven central,以便用户可以通过简单地在它们的pom中引用它来使用该库.像这样:

<dependency>
    <groupId>in.ksharma</groupId>
    <artifactId>log4j-weblayout</artifactId>
    <version>0.0.1-BETA</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我发现了几个在线教程,但其中一些已经过时,有些人建议自动完成整个过程,从而使其明显复杂化.

例如,一个教程建议为您的github帐户创建SSH密钥,并且只要推送到maven central,maven就会自动创建一个git标记.虽然这很有用,但没有必要开始.

另一个例子,尝试通过maven直接释放它也会产生某种错误:

mvn release:clean release:prepare release:perform -B -e | tee maven-central-deploy.log
Run Code Online (Sandbox Code Playgroud)

得到:

svn:E155007:'/ home/kshitiz/Documents/workspaces/ggts/log4j-weblayout/pom.xml'不是工作副本

当你第一次做某事时,通常先手动完成,然后自动完成.

将JAR置于maven中心的最基本,最简单的方法是什么?

java maven

27
推荐指数
2
解决办法
5948
查看次数

Maven发布插件 - 需要SNAPSHOT项目

我正在使用Jenkins内部的M2发布插件,它在内部调用maven-release-plugin 2.3.2,同时构建抛出此错误:You don't have a SNAPSHOT project in the reactor projects list.问题是,我的项目劲歌有自己的版本1.0.0快照.我错过了什么?

com.abc.defcompany parent POM,我正在做mvn releaseutils

<modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.abc</groupId>
        <artifactId>def</artifactId>
        <version>1.0.0</version>
    </parent>

    <groupId>com.abc.def</groupId>
    <artifactId>utils</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>utils</name>
Run Code Online (Sandbox Code Playgroud)

是的,我已经完成了我的基本Google + SO拖网,而且它指出我的POM应该有SNAPSHOT作为版本,已经存在.除了我公司的父母POM不是快照.这可能是原因吗?

hudson maven maven-release-plugin jenkins

10
推荐指数
3
解决办法
2万
查看次数

释放子模块时,如何解决“由于未释放依赖项而无法释放项目”?

我正在使用Maven 3.1.1,并尝试使用Maven发行插件来发行多模块项目的子模块。父模块已释放,此子模块不在父子模块列表中。在我的子模块pom.xml文件中,

    <parent>
            <artifactId>subco</artifactId>
            <groupId>org.mainco.subco</groupId>
            <version>52.0.0-SNAPSHOT</version>
    </parent>
    <name>myproject</name>
    <url>http://maven.apache.org</url>

    <dependencyManagement>
            <dependencies>
                    <dependency>
                            <groupId>org.mainco.subco</groupId>
                            <artifactId>core</artifactId>
                            <version>${project.version}</version>
                    </dependency>
   </dependencyManagement>

    <dependencies>
            ...
            <dependency>
                    <groupId>org.mainco.subco</groupId>
                    <artifactId>core</artifactId>
            </dependency>
Run Code Online (Sandbox Code Playgroud)

但是,当我运行以下

mvn -B -DdevelopmentVersion=52.0.1-SNAPSHOT -DreleaseVersion=52.0.0 -Dusername=***** -Dtag=myproject-52.0.0 -DskipTests -P prod -Dresume=false -DdryRun=true -DallowTimestampedSnapshots=true org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare
Run Code Online (Sandbox Code Playgroud)

我得到错误

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (default-cli) on project myproject: Can't release project due to non released dependencies :
[ERROR] org.mainco.subco:core:jar:52.0.0-SNAPSHOT:compile
...
[ERROR] org.mainco.subco:subco:pom:52.0.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

我无法更改父pom.xml文件中的任何属性……在子模块中我可以做些什么来使上述命令成功运行吗?我喜欢使用“ $ {project.version}”,因为我不必在pom中对版本进行硬编码。另请注意,我正在使用“ -DallowTimestampedSnapshots = true”,该名称已被忽略。

编辑:

甚至向pom添加一个单独的version元素,像这样

    <parent>
            <artifactId>subco</artifactId>
            <groupId>org.mainco.subco</groupId>
            <version>52.0.0</version>
    </parent>

    <name>myproject</name>
    <url>http://maven.apache.org</url>
    <version>52.0.0-SNAPSHOT</version>
Run Code Online (Sandbox Code Playgroud)

导致与上述相同的错误。

dependencies snapshot release-management maven maven-release-plugin

5
推荐指数
1
解决办法
2万
查看次数