我创建了一个开源项目,我想将其发布到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中心的最基本,最简单的方法是什么?
我正在使用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.def是company parent POM,我正在做mvn release的utils
<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不是快照.这可能是原因吗?
我正在使用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