我正在尝试将我们的存储库从SVN迁移到Git,我在一个非常大的项目中遇到了发布插件的问题。
问题:
这个项目有大约50个子模块,它试图将所有修改后的pom添加为一个git add -- '. 这打破了windows命令行的限制。
幸运的是,在maven-scm-提供者-gitexe的版本1.8.1中对此进行了修复,但是maven-resess-plugin目前设置为使用1.7,但没有修复。
我尝试将以下内容添加到我的根pom中。xml,但我仍然可以看到它在mvn版本中下载了1.7:准备,甚至在详细模式下运行进程,都没有表明它正在使用1.8.1。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>perform</goal>
</goals>
<configuration>
<pomFileName>subproj/pom.xml</pomFileName>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-api</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
</plugin>
我还尝试在pom中添加以下内容。xml,以防迫使它使用正确的版本而没有更多的运气。
<extensions>
<extension>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId>
<version>1.8.1</version>
</extension>
</extensions>
我怀疑它没有使用1.8.1的原因是,它仍然无法尝试对所有pom文件进行git添加,而我已经检查了插件源代码,它显然应该为Windows单独添加每个文件(我甚至仔细检查了codehaus plexus Os.isFamily(Os.FAMILY\U Windows),以确保在我的机器上返回true。
我错过了什么?如何强制发布插件使用正确版本的scm插件?
按照Aurelian的建议,将子项目提取到单独的模块中。遵循这一原则将使你的生活更简单。您不必为了发布而发布没有更改的模块。此外,将缩短构建时间。如果你看看Github上托管的大多数Java项目,你会发现很多人已经将他们的每个模块提取到单独的项目中。Git主要用于较小的存储库。
您可以像这样提取子目录的历史记录:
git remote rm origin
git filter-branch --subdirectory-filter ${project} HEAD
git remote add origin git@foo.com:path/to/${project}.git
git branch --set-upstream master origin/master
git push
我相信这并不是你一直在寻找的答案之王,但我认为这可以帮助你走上正确的道路,如果你不这样移动你的所有项目,至少它会缩短你的列表,也许还能帮助你解决问题。
愚蠢的问题,但是,你有没有想过将所有这些子模块移动到他们自己的git项目中?然后分别释放它们?
根据maven版本插件2.4.1变更日志http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=11144
编辑:该错误与此SCM错误相关:http://jira.codehaus.org/browse/SCM-686
一条评论说使用maven-scm-filent-gitexe
ANDmaven-scm-filent-git-Commons
作为依赖项
<dependencies>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-git-commons</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
问题内容: 为了利用C 11和c 14功能,我有一个使用较新版本的gcc(4.9.1)和较新的libstdc 编译的应用程序。该应用程序由许多小程序组成,因此我将libstdc 作为共享库而不是静态库进行链接(即,我不希望使用-static-libstdc ++) 我希望将新版本的libstdc ++与应用程序一起放在/ opt // lib64下(注意:GPL的例外明确允许这样做) libstd
渐变-泊坞插件和Spring靴版本 2.0.0.M4 M4 使用较新的客户端,并且使用 docker 插件以异常结尾,存在一个问题: 我的主项目中的构建脚本: 如您所见,我们加载spring-boot-gradle-plugin version=2.0.0。M4及其所有依赖项。 我的子项目构建:gradle: 最重要的是,docker.gradle文件与子项目的build.gradle文件位于同一
问题内容: 自从升级到我使用的一种IDEA插件的最新版本以来,我遇到了问题。我可以从其网站上下载该插件以前版本的ZIP文件,但是找不到有关如何 手动安装特定版本 插件的安装说明。 有人知道怎么做吗? 问题答案: 想想您可以简单地将jar放到plugins目录中: 在Windows上:
我正在与Maven一起使用Pact JVM/Java(Version3)。中没有项目版本控制--它只是版本。在Pact Maven插件中配置的与Maven project version-相同。 我应该玩和吗?我是否应该升级到Pact版本4并使用消费者版本选择器?
问题内容: 我由大约40个开发人员组成的团队工作,我不希望任何开发人员使用任何开发人员都可以使用的特定API(准确地说是java.sun.Base64),而是让他们使用sun API的替代方法作为其专有。 是否有用于maven的插件,通过这些插件在pom.xml中指定受限制的软件包,如果在代码中的任何位置使用了这些软件包中的任何一个,则构建将中断? 还是有一种更优雅的方式来做到这一点? 谢谢 问题
我试图使用maven发布插件来创建一个Java项目的发布版本,该项目将Performe作为SCM。 我的pom scm部分是: 我还使用P4Maven插件和Maven发布插件: 当调用“mvn release:prepare-DdryRun=true”时,我得到 有什么想法吗? 我可以调用mvn scm:checkout。