我正在尝试发布一个使用git作为SCM的多模块maven项目,我遇到的第一个问题是maven发布插件构建release.properties scm.url的方式.我的父POM看起来像这样:
<packaging>pom</packaging>
<groupId>org.project</groupId>
<artifactId>project-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<scm>
<connection>scm:git:git://github.com/username/project.git</connection>
<developerConnection>scm:git:git@github.com:username/project.git</developerConnection>
<url>http://github.com/username/project</url>
</scm>
<modules>
<module>api</module>
<module>spi</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
模块POM很简单:
<parent>
<groupId>org.project</groupId>
<artifactId>project-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>api</artifactId>
<version>0.2.2</version>
Run Code Online (Sandbox Code Playgroud)
我的目标是能够发布单个模块,因为它们各自具有不同的版本,并且我不希望每次发布时都将所有版本一起增加.
当我切换到api
目录并执行以下操作时,mvn release:clean release:prepare
我遇到了以下输出:
[INFO] Executing: cmd.exe /X /C "git push git@github.com:username/project.git/api master:master"
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Unable to commit files
Provider message:
The git-push command failed.
Command output:
ERROR: Repository not found.
Run Code Online (Sandbox Code Playgroud)
看起来maven发布插件通过将模块名称附加到其上来创建scm.url developerConnection
,这最终不是github上的有效存储库.我不确定设置它的正确方法是什么.可能是Maven + git +发布单个子模块根本不起作用的情况?任何输入都表示赞赏.
众所周知,git在这些日子里非常受欢迎,因为它具有高效率,因为它具有本地计算机上的所有历史记录,并且可以在没有网络的情况下完成历史检索.也许对于外联网用户来说,网络问题并不重要,但是git也有其他类型的优势,比如轻量级分支(我仍然不确定它和svn的分支之间有什么区别,为什么git的分支很轻)?
我也知道很多人还在使用颠覆,为什么?如果git很好,他们可能会切换到git :)
所以,这里有人可以告诉我颠覆的一些优点吗?
还有一个问题:
is there anything which can be done by svn, but cannot be done with git?
Run Code Online (Sandbox Code Playgroud)