我正面临连续体发布的问题:准备阶段在scm-check-modification步骤中失败并出现错误:
[错误] org.apache.maven.shared.release.ReleaseFailureException:无法准备发布,因为您有本地修改:[pom.xml:modified]
我做了什么 :
我知道scm-check-modification调用ScmCheckModificationsPhase类来验证与SCM上的内容相比没有本地更改.
我理解,如果我只使用Maven,如果有一些本地更改,或者本地代码和SVN之间的任何差异,例如,release:prepare将不起作用,因为它首先检查修改; 但是使用Continuum,我不知道为什么它应该是本地代码和SVN存储库之间的差异?所以我不知道为什么发布:Continuum的准备目标正面临着这个问题.
我的pom示例:
<build>
<plugins>
...
<plugin>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
</configuration>
</plugin>
...
</plugins>
</build>
<scm>
<connection>scm:cvs:ext:url:/var/cvs:application_name</connection> <developerConnection>scm:cvs:ext:url:/var/cvs:application_name</developerConnection>
</scm>
.....
</project>
Run Code Online (Sandbox Code Playgroud)
在父pom.xml中:
...
<pluginManagement>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
<goals>deploy</goals>
<arguments>-Prelease</arguments>
</configuration>
</plugin>
.....
Run Code Online (Sandbox Code Playgroud)
有关信息,项目的构建和发布始终正常,直到现在.
有一个绕道解决方案解决了我的问题,但我仍然想了解这个问题的根源.
旁路解决方案:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
<configuration>
...
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud) 在我们公司,我们正在对Java Development/QA street中的产品进行批判性研究.我们正在研究的产品之一是Apache Continuum.
具有Continuum经验的人(最好还有Jenkins经验)可以解释Apache Continuum的优点和缺点(特别是关于Jenkins)吗?
我的第一印象是:
好处:
缺点:
在以下情况下,对于多项目,版本控制和发布管理的最佳实践是什么?
我只想为父项目和所有子项目设置一次版本,因为项目的每个部分必须具有相同的版本.
我想要的是,用continuum/maven发布项目.
Normaly一个简单的方法应该是在父pom中设置版本并在每个孩子中说"父母的最后一个版本",但这不适用于maven <3.1(见这里)[http://jira.codehaus.org/browse/ MNG-624]现在我在每个子项目中设置父项目的版本,并且对于每个版本,我必须更改所有子项和父项的版本.
例:
亲
<groupId>com.test</groupId>
<artifactId>com.test.buildDefinition</artifactId>
<version>1.0-SNAPSHOT</version>
Run Code Online (Sandbox Code Playgroud)
儿童
<parent>
<groupId>com.test</groupId>
<artifactId>com.test.buildDefinition</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.test</groupId>
<artifactId>com.test.project</artifactId>
<version>${parent.version}</version>
Run Code Online (Sandbox Code Playgroud)
如果我想现在使用Continuum发布我的项目,我使用以下顺序来释放它:
但这不起作用,因为在更改父版本之后,孩子们在父母中不再有SNAPSHOT版本,我认为必须有更好的方法来发布连续体的多项目.
我正在评估像 Jenkins 和 Apache Continuum 这样的构建引擎。我们的大部分构建使用 Maven。Jenkins 中有哪些用于发布管理的选项?
我所说的发布管理是指从源代码管理中的分支创建发布,然后在 Maven 中更新版本标记的过程。例如,如果我的 Maven 项目(父+子子项目)当前是 5.5-SNAPSHOT 版本,我想告诉 Jenkins 检查、构建和测试这个分支的最新版本,并将 POM 更新到版本 5.5 . 然后,它应该在 5.6-SNAPSHOT 版本的源代码管理中创建一个新分支,并相应地更新这个新分支上的所有 POM。
Apache Continuum,我相信它是由 Sonatype 开发的,它是 Maven 背后的同一个团队,具有此发布管理功能。我看过Jenkins的一个插件叫Artifactory Plugin,好像要求仓库管理器是Artifactory。Jenkins 还可以使用哪些其他发布管理选项?最佳做法是什么?
谢谢,
史蒂夫·所罗门 stev.solomon@gmail.com
我想在 python 2.7 上使用 Pygal 创建一个仪表板(同一窗口中的几个图),但后者没有 subplot 功能,是否有解决方案,不使用散景或绘图?
Matplotlib 上的示例:
fig, axes = plt.subplots(ncols=4, nrows=5, figsize=(35,20))
for ax in axes.flatten():
ax.plot([2,3,5,1])
plt.show()
Run Code Online (Sandbox Code Playgroud)
Pygal 上有类似的东西吗?
continuum ×5
maven ×3
java ×2
jenkins ×2
anaconda ×1
dependencies ×1
matplotlib ×1
pygal ×1
python ×1
release ×1