You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2006/04/29 21:29:17 UTC
svn commit: r398224 [1/5] - in /maven/plugins/trunk/maven-release-plugin/src:
main/java/org/apache/maven/plugins/release/phase/
main/resources/META-INF/plexus/
test/java/org/apache/maven/plugins/release/phase/
test/resources/org/apache/maven/plugins/re...
Author: brett
Date: Sat Apr 29 12:29:10 2006
New Revision: 398224
URL: http://svn.apache.org/viewcvs?rev=398224&view=rev
Log:
[MRELEASE-98] abstracted rewriting code and implemented development pom rewriting
Added:
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java (with props)
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractRewritingReleasePhaseTestCase.java (with props)
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhaseTest.java (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhaseTest.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/basic-pom/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom-with-schema.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/basic-pom/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject2/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject2/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject2/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject2/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject2/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject2/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject2/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject2/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject2/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject2/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject3/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject3/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject3/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject2/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject2/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject3/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject3/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject3/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject2/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject2/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject3/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject3/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject3/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject2/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject2/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject3/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject3/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject3/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject2/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject2/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject3/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject3/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject3/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject4/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject4/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject4/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject2/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject2/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject3/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject3/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject3/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject4/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject4/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject4/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/subproject1/expected-pom-version-changed.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/subproject1/
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/subproject1/pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-dependencies/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-dependencies/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-dependencies/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-extension/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-extension/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-extension/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-plugins/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-plugins/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-plugins/subproject2/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-report-plugins/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-report-plugins/subproject1/expected-pom.xml (with props)
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-report-plugins/subproject2/expected-pom.xml (with props)
Modified:
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhase.java
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java
maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckDependencySnapshotsPhaseTest.java
maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhaseTest.java
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-released-parent/expected-pom.xml
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-released-parent/pom.xml
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-released-parent/subproject1/expected-pom.xml
maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-released-parent/subproject1/pom.xml
Added: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java?rev=398224&view=auto
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java (added)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java Sat Apr 29 12:29:10 2006
@@ -0,0 +1,500 @@
+package org.apache.maven.plugins.release.phase;
+
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Extension;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.plugins.release.ReleaseExecutionException;
+import org.apache.maven.plugins.release.config.ReleaseConfiguration;
+import org.apache.maven.plugins.release.scm.ReleaseScmCommandException;
+import org.apache.maven.plugins.release.scm.ReleaseScmRepositoryException;
+import org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.edit.EditScmResult;
+import org.apache.maven.scm.manager.NoSuchScmProviderException;
+import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.Namespace;
+import org.jdom.Text;
+import org.jdom.filter.ElementFilter;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.Format;
+import org.jdom.output.XMLOutputter;
+import org.jdom.xpath.XPath;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * XXX: this base class could instead be a single instance, and the variations described through composition instead
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public abstract class AbstractRewritePomsPhase
+ extends AbstractLogEnabled
+ implements ReleasePhase
+{
+ /**
+ * Tool that gets a configured SCM repository from release configuration.
+ */
+ private ScmRepositoryConfigurator scmRepositoryConfigurator;
+
+ /**
+ * The line separator to use.
+ */
+ private static final String LS = System.getProperty( "line.separator" );
+
+ public void execute( ReleaseConfiguration releaseConfiguration )
+ throws ReleaseExecutionException
+ {
+ transform( releaseConfiguration, false );
+ }
+
+ private void transform( ReleaseConfiguration releaseConfiguration, boolean simulate )
+ throws ReleaseExecutionException
+ {
+ for ( Iterator it = releaseConfiguration.getReactorProjects().iterator(); it.hasNext(); )
+ {
+ MavenProject project = (MavenProject) it.next();
+
+ String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
+
+ getLogger().info( "Transforming " + projectId + " to release" );
+
+ transformProject( project, releaseConfiguration, simulate );
+ }
+ }
+
+ private void transformProject( MavenProject project, ReleaseConfiguration releaseConfiguration, boolean simulate )
+ throws ReleaseExecutionException
+ {
+ Document document;
+ String intro = null;
+ String outtro = null;
+ try
+ {
+ String content = FileUtils.fileRead( project.getFile() );
+
+ SAXBuilder builder = new SAXBuilder();
+ document = builder.build( new StringReader( content ) );
+
+ // rewrite DOM as a string to find differences, since text outside the root element is not tracked
+ StringWriter w = new StringWriter();
+ Format format = Format.getRawFormat();
+ format.setLineSeparator( LS );
+ XMLOutputter out = new XMLOutputter( format );
+ out.output( document.getRootElement(), w );
+
+ int index = content.indexOf( w.toString() );
+ if ( index >= 0 )
+ {
+ intro = content.substring( 0, index );
+ outtro = content.substring( index + w.toString().length() );
+ }
+ }
+ catch ( JDOMException e )
+ {
+ throw new ReleaseExecutionException( "Error reading POM: " + e.getMessage(), e );
+ }
+ catch ( IOException e )
+ {
+ throw new ReleaseExecutionException( "Error reading POM: " + e.getMessage(), e );
+ }
+
+ ScmRepository scmRepository;
+ ScmProvider provider;
+ try
+ {
+ scmRepository = scmRepositoryConfigurator.getConfiguredRepository( releaseConfiguration );
+
+ provider = scmRepositoryConfigurator.getRepositoryProvider( scmRepository );
+ }
+ catch ( ScmRepositoryException e )
+ {
+ throw new ReleaseScmRepositoryException( e.getMessage(), e.getValidationMessages() );
+ }
+ catch ( NoSuchScmProviderException e )
+ {
+ throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e );
+ }
+
+ transformDocument( project, document.getRootElement(), releaseConfiguration, scmRepository );
+
+ if ( simulate )
+ {
+ File outputFile =
+ new File( project.getFile().getParentFile(), project.getFile().getName() + "." + getPomSuffix() );
+ writePom( outputFile, document, releaseConfiguration, project.getModelVersion(), intro, outtro );
+ }
+ else
+ {
+ writePom( project.getFile(), document, releaseConfiguration, project.getModelVersion(), intro, outtro,
+ scmRepository, provider );
+ }
+ }
+
+ protected abstract String getPomSuffix();
+
+ private void transformDocument( MavenProject project, Element rootElement,
+ ReleaseConfiguration releaseConfiguration, ScmRepository scmRepository )
+ throws ReleaseExecutionException
+ {
+ Namespace namespace = rootElement.getNamespace();
+ Map mappedVersions = getNextVersionMap( releaseConfiguration );
+ Map originalVersions = getOriginalVersionMap( releaseConfiguration );
+
+ String parentVersion = rewriteParent( project, rootElement, namespace, mappedVersions, originalVersions );
+
+ String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
+
+ rewriteVersion( rootElement, namespace, mappedVersions, originalVersions, projectId, project, parentVersion );
+
+ rewriteDependencies( project.getDependencies(), rootElement, mappedVersions, originalVersions );
+
+ if ( project.getDependencyManagement() != null )
+ {
+ Element dependencyRoot = rootElement.getChild( "dependencyManagement", namespace );
+ if ( dependencyRoot != null )
+ {
+ rewriteDependencies( project.getDependencyManagement().getDependencies(), dependencyRoot,
+ mappedVersions, originalVersions );
+ }
+ }
+
+ if ( project.getBuild() != null )
+ {
+ Element pluginsRoot = rootElement.getChild( "build", namespace );
+ if ( pluginsRoot != null )
+ {
+ rewritePlugins( project.getBuildPlugins(), pluginsRoot, mappedVersions, originalVersions );
+ if ( project.getPluginManagement() != null )
+ {
+ pluginsRoot = pluginsRoot.getChild( "pluginManagement", namespace );
+ if ( pluginsRoot != null )
+ {
+ rewritePlugins( project.getPluginManagement().getPlugins(), pluginsRoot, mappedVersions,
+ originalVersions );
+ }
+ }
+ }
+ rewriteExtensions( project.getBuildExtensions(), pluginsRoot, mappedVersions, originalVersions );
+ }
+
+ if ( project.getReporting() != null )
+ {
+ Element pluginsRoot = rootElement.getChild( "reporting", namespace );
+ if ( pluginsRoot != null )
+ {
+ rewriteReportPlugins( project.getReportPlugins(), pluginsRoot, mappedVersions, originalVersions );
+ }
+ }
+
+ transformScm( project, rootElement, namespace, releaseConfiguration, projectId, scmRepository );
+ }
+
+ private void rewriteVersion( Element rootElement, Namespace namespace, Map mappedVersions, Map originalVersions,
+ String projectId, MavenProject project, String parentVersion )
+ throws ReleaseExecutionException
+ {
+ // TODO: what about if version is inherited? shouldn't prompt...
+ Element versionElement = rootElement.getChild( "version", namespace );
+ String version = (String) mappedVersions.get( projectId );
+ if ( version == null )
+ {
+ throw new ReleaseExecutionException( "Version for '" + project.getName() + "' was not mapped" );
+ }
+ else
+ {
+
+ if ( versionElement == null )
+ {
+ if ( !version.equals( parentVersion ) )
+ {
+ // we will add this after artifactId, since it was missing but different from the inherited version
+ Element artifactIdElement = rootElement.getChild( "artifactId", namespace );
+ int index = rootElement.indexOf( artifactIdElement );
+
+ versionElement = new Element( "version", namespace );
+ versionElement.setText( version );
+ rootElement.addContent( index + 1, new Text( "\n " ) );
+ rootElement.addContent( index + 2, versionElement );
+ }
+ }
+ else
+ {
+ versionElement.setText( version );
+ }
+ }
+ }
+
+ private String rewriteParent( MavenProject project, Element rootElement, Namespace namespace, Map mappedVersions,
+ Map originalVersions )
+ throws ReleaseExecutionException
+ {
+ String parentVersion = null;
+ if ( project.hasParent() )
+ {
+ Element parentElement = rootElement.getChild( "parent", namespace );
+ Element versionElement = parentElement.getChild( "version", namespace );
+ MavenProject parent = project.getParent();
+ String key = ArtifactUtils.versionlessKey( parent.getGroupId(), parent.getArtifactId() );
+ parentVersion = (String) mappedVersions.get( key );
+ if ( parentVersion == null )
+ {
+ if ( parent.getVersion().equals( originalVersions.get( key ) ) )
+ {
+ throw new ReleaseExecutionException(
+ "Version for parent '" + parent.getName() + "' was not mapped" );
+ }
+ }
+ else
+ {
+ versionElement.setText( parentVersion );
+ }
+ }
+ return parentVersion;
+ }
+
+ private void rewriteDependencies( List dependencies, Element dependencyRoot, Map mappedVersions,
+ Map originalVersions )
+ throws ReleaseExecutionException
+ {
+ if ( dependencies != null )
+ {
+ for ( Iterator i = dependencies.iterator(); i.hasNext(); )
+ {
+ Dependency dep = (Dependency) i.next();
+
+ updateDomVersion( dep.getGroupId(), dep.getArtifactId(), mappedVersions, dep.getVersion(),
+ originalVersions, "dependencies", "dependency", dependencyRoot );
+ }
+ }
+ }
+
+ private void rewritePlugins( List plugins, Element pluginRoot, Map mappedVersions, Map originalVersions )
+ throws ReleaseExecutionException
+ {
+ if ( plugins != null )
+ {
+ for ( Iterator i = plugins.iterator(); i.hasNext(); )
+ {
+ Plugin plugin = (Plugin) i.next();
+
+ // We can ignore plugins whose version is assumed, they are only written into the release pom
+ if ( plugin.getVersion() != null )
+ {
+ updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions, plugin.getVersion(),
+ originalVersions, "plugins", "plugin", pluginRoot );
+ }
+ }
+ }
+ }
+
+ private void rewriteExtensions( List extensions, Element extensionRoot, Map mappedVersions, Map originalVersions )
+ throws ReleaseExecutionException
+ {
+ if ( extensions != null )
+ {
+ for ( Iterator i = extensions.iterator(); i.hasNext(); )
+ {
+ Extension extension = (Extension) i.next();
+
+ updateDomVersion( extension.getGroupId(), extension.getArtifactId(), mappedVersions,
+ extension.getVersion(), originalVersions, "extensions", "extension", extensionRoot );
+ }
+ }
+ }
+
+ private void rewriteReportPlugins( List plugins, Element pluginRoot, Map mappedVersions, Map originalVersions )
+ throws ReleaseExecutionException
+ {
+ if ( plugins != null )
+ {
+ for ( Iterator i = plugins.iterator(); i.hasNext(); )
+ {
+ ReportPlugin plugin = (ReportPlugin) i.next();
+
+ // We can ignore plugins whose version is assumed, they are only written into the release pom
+ if ( plugin.getVersion() != null )
+ {
+ updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions, plugin.getVersion(),
+ originalVersions, "plugins", "plugin", pluginRoot );
+ }
+ }
+ }
+ }
+
+ private void updateDomVersion( String groupId, String artifactId, Map mappedVersions, String version,
+ Map originalVersions, String groupTagName, String tagName, Element dependencyRoot )
+ throws ReleaseExecutionException
+ {
+ String key = ArtifactUtils.versionlessKey( groupId, artifactId );
+ String mappedVersion = (String) mappedVersions.get( key );
+
+ if ( version.equals( originalVersions.get( key ) ) )
+ {
+ if ( mappedVersion != null )
+ {
+ getLogger().debug( "Updating " + artifactId + " to " + mappedVersion );
+
+ try
+ {
+ XPath xpath = XPath.newInstance( "./" + groupTagName + "/" + tagName + "[groupId='" + groupId +
+ "' and artifactId='" + artifactId + "']" );
+
+ Element dependency = (Element) xpath.selectSingleNode( dependencyRoot );
+ Element versionElement = dependency.getChild( "version" );
+
+ // avoid if in management
+ if ( versionElement != null )
+ {
+ versionElement.setText( mappedVersion );
+ }
+ }
+ catch ( JDOMException e )
+ {
+ throw new ReleaseExecutionException( "Unable to locate " + tagName + " to process in document", e );
+ }
+ }
+ else
+ {
+ throw new ReleaseExecutionException(
+ "Version '" + version + "' for " + tagName + " '" + key + "' was not mapped" );
+ }
+ }
+ }
+
+ private void writePom( File pomFile, Document document, ReleaseConfiguration releaseConfiguration,
+ String modelVersion, String intro, String outtro, ScmRepository repository,
+ ScmProvider provider )
+ throws ReleaseExecutionException
+ {
+ try
+ {
+ if ( releaseConfiguration.isUseEditMode() || provider.requiresEditMode() )
+ {
+ EditScmResult result =
+ provider.edit( repository, new ScmFileSet( releaseConfiguration.getWorkingDirectory(), pomFile ) );
+
+ if ( !result.isSuccess() )
+ {
+ throw new ReleaseScmCommandException( "Unable to enable editing on the POM", result );
+ }
+ }
+ }
+ catch ( ScmException e )
+ {
+ throw new ReleaseExecutionException( "An error occurred enabling edit mode: " + e.getMessage(), e );
+ }
+
+ writePom( pomFile, document, releaseConfiguration, modelVersion, intro, outtro );
+ }
+
+ private void writePom( File pomFile, Document document, ReleaseConfiguration releaseConfiguration,
+ String modelVersion, String intro, String outtro )
+ throws ReleaseExecutionException
+ {
+ Element rootElement = document.getRootElement();
+
+ if ( releaseConfiguration.isAddSchema() )
+ {
+ Namespace pomNamespace = Namespace.getNamespace( "", "http://maven.apache.org/POM/" + modelVersion );
+ rootElement.setNamespace( pomNamespace );
+ Namespace xsiNamespace = Namespace.getNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
+ rootElement.addNamespaceDeclaration( xsiNamespace );
+
+ if ( rootElement.getAttribute( "schemaLocation", xsiNamespace ) == null )
+ {
+ rootElement.setAttribute( "schemaLocation", "http://maven.apache.org/POM/" + modelVersion +
+ " http://maven.apache.org/maven-v" + modelVersion.replace( '.', '_' ) + ".xsd", xsiNamespace );
+ }
+
+ // the empty namespace is considered equal to the POM namespace, so match them up to avoid extra xmlns=""
+ ElementFilter elementFilter = new ElementFilter( Namespace.getNamespace( "" ) );
+ for ( Iterator i = rootElement.getDescendants( elementFilter ); i.hasNext(); )
+ {
+ Element e = (Element) i.next();
+ e.setNamespace( pomNamespace );
+ }
+ }
+
+ Writer writer = null;
+ try
+ {
+ // TODO: better handling of encoding. Currently the definition is not written out and is embedded in the intro if it already existed
+ // TODO: the XMLOutputter and Writer need to have their encodings aligned.
+ writer = new FileWriter( pomFile );
+
+ if ( intro != null )
+ {
+ writer.write( intro );
+ }
+
+ Format format = Format.getRawFormat();
+ format.setLineSeparator( LS );
+ XMLOutputter out = new XMLOutputter( format );
+ out.output( document.getRootElement(), writer );
+
+ if ( outtro != null )
+ {
+ writer.write( outtro );
+ }
+ }
+ catch ( IOException e )
+ {
+ throw new ReleaseExecutionException( "Error writing POM: " + e.getMessage(), e );
+ }
+ finally
+ {
+ IOUtil.close( writer );
+ }
+ }
+
+ public void simulate( ReleaseConfiguration releaseConfiguration )
+ throws ReleaseExecutionException
+ {
+ transform( releaseConfiguration, true );
+ }
+
+ protected abstract Map getOriginalVersionMap( ReleaseConfiguration releaseConfiguration );
+
+ protected abstract Map getNextVersionMap( ReleaseConfiguration releaseConfiguration );
+
+ protected abstract void transformScm( MavenProject project, Element rootElement, Namespace namespace,
+ ReleaseConfiguration releaseConfiguration, String projectId,
+ ScmRepository scmRepository )
+ throws ReleaseExecutionException;
+}
Propchange: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhase.java?rev=398224&r1=398223&r2=398224&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhase.java Sat Apr 29 12:29:10 2006
@@ -16,23 +16,71 @@
* limitations under the License.
*/
+import org.apache.maven.model.Scm;
+import org.apache.maven.plugins.release.ReleaseExecutionException;
import org.apache.maven.plugins.release.config.ReleaseConfiguration;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.jdom.Element;
+import org.jdom.Namespace;
+
+import java.util.Map;
/**
- * TODO [!]: Description.
+ * Rewrite POMs for future development
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
*/
public class RewritePomsForDevelopmentPhase
- implements ReleasePhase
+ extends AbstractRewritePomsPhase
{
- public void execute( ReleaseConfiguration releaseConfiguration )
+ protected String getPomSuffix()
+ {
+ return "next";
+ }
+
+ protected void transformScm( MavenProject project, Element rootElement, Namespace namespace,
+ ReleaseConfiguration releaseConfiguration, String projectId,
+ ScmRepository scmRepository )
+ throws ReleaseExecutionException
+ {
+ // If SCM is null in original model, it is inherited, no mods needed
+ if ( project.getScm() != null )
+ {
+ Element scmRoot = rootElement.getChild( "scm", namespace );
+ if ( scmRoot != null )
+ {
+ Scm scm = (Scm) releaseConfiguration.getOriginalScmInfo().get( projectId );
+ if ( scm == null )
+ {
+ throw new ReleaseExecutionException(
+ "Unable to find original SCM info for '" + project.getName() + "'" );
+ }
+
+ scmRoot.getChild( "connection", namespace ).setText( scm.getConnection() );
+
+ Element devConnection = scmRoot.getChild( "developerConnection", namespace );
+ if ( devConnection != null )
+ {
+ devConnection.setText( scm.getDeveloperConnection() );
+ }
+
+ Element url = scmRoot.getChild( "url", namespace );
+ if ( url != null )
+ {
+ url.setText( scm.getUrl() );
+ }
+ }
+ }
+ }
+
+ protected Map getOriginalVersionMap( ReleaseConfiguration releaseConfiguration )
{
- // TODO [!]: implement
+ return releaseConfiguration.getReleaseVersions();
}
- public void simulate( ReleaseConfiguration releaseConfiguration )
+ protected Map getNextVersionMap( ReleaseConfiguration releaseConfiguration )
{
- // TODO [!]: implement
+ return releaseConfiguration.getDevelopmentVersions();
}
}
Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java?rev=398224&r1=398223&r2=398224&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java Sat Apr 29 12:29:10 2006
@@ -16,48 +16,14 @@
* limitations under the License.
*/
-import org.apache.maven.artifact.ArtifactUtils;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Extension;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.ReportPlugin;
import org.apache.maven.model.Scm;
-import org.apache.maven.plugins.release.ReleaseExecutionException;
import org.apache.maven.plugins.release.config.ReleaseConfiguration;
-import org.apache.maven.plugins.release.scm.ReleaseScmCommandException;
-import org.apache.maven.plugins.release.scm.ReleaseScmRepositoryException;
-import org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator;
import org.apache.maven.plugins.release.scm.ScmTranslator;
import org.apache.maven.project.MavenProject;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.command.edit.EditScmResult;
-import org.apache.maven.scm.manager.NoSuchScmProviderException;
-import org.apache.maven.scm.provider.ScmProvider;
import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.maven.scm.repository.ScmRepositoryException;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
-import org.jdom.Document;
import org.jdom.Element;
-import org.jdom.JDOMException;
import org.jdom.Namespace;
-import org.jdom.Text;
-import org.jdom.filter.ElementFilter;
-import org.jdom.input.SAXBuilder;
-import org.jdom.output.Format;
-import org.jdom.output.XMLOutputter;
-import org.jdom.xpath.XPath;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.Iterator;
-import java.util.List;
import java.util.Map;
/**
@@ -66,200 +32,22 @@
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
*/
public class RewritePomsForReleasePhase
- extends AbstractLogEnabled
- implements ReleasePhase
+ extends AbstractRewritePomsPhase
{
/**
- * Tool that gets a configured SCM repository from release configuration.
- */
- private ScmRepositoryConfigurator scmRepositoryConfigurator;
-
- /**
* SCM URL translators mapped by provider name.
*/
private Map scmTranslators;
- /**
- * The line separator to use.
- */
- private static final String LS = System.getProperty( "line.separator" );
-
- public void execute( ReleaseConfiguration releaseConfiguration )
- throws ReleaseExecutionException
+ protected String getPomSuffix()
{
- transform( releaseConfiguration, false );
- }
-
- private void transform( ReleaseConfiguration releaseConfiguration, boolean simulate )
- throws ReleaseExecutionException
- {
- for ( Iterator it = releaseConfiguration.getReactorProjects().iterator(); it.hasNext(); )
- {
- MavenProject project = (MavenProject) it.next();
-
- String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
-
- getLogger().info( "Transforming " + projectId + " to release" );
-
- Document document;
- String intro = null;
- String outtro = null;
- try
- {
- String content = FileUtils.fileRead( project.getFile() );
-
- SAXBuilder builder = new SAXBuilder();
- document = builder.build( new StringReader( content ) );
-
- // rewrite DOM as a string to find differences, since text outside the root element is not tracked
- StringWriter w = new StringWriter();
- Format format = Format.getRawFormat();
- format.setLineSeparator( LS );
- XMLOutputter out = new XMLOutputter( format );
- out.output( document.getRootElement(), w );
-
- int index = content.indexOf( w.toString() );
- if ( index >= 0 )
- {
- intro = content.substring( 0, index );
- outtro = content.substring( index + w.toString().length() );
- }
- }
- catch ( JDOMException e )
- {
- throw new ReleaseExecutionException( "Error reading POM: " + e.getMessage(), e );
- }
- catch ( IOException e )
- {
- throw new ReleaseExecutionException( "Error reading POM: " + e.getMessage(), e );
- }
-
- ScmRepository scmRepository;
- ScmProvider provider;
- try
- {
- scmRepository = scmRepositoryConfigurator.getConfiguredRepository( releaseConfiguration );
-
- provider = scmRepositoryConfigurator.getRepositoryProvider( scmRepository );
- }
- catch ( ScmRepositoryException e )
- {
- throw new ReleaseScmRepositoryException( e.getMessage(), e.getValidationMessages() );
- }
- catch ( NoSuchScmProviderException e )
- {
- throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e );
- }
-
- transformPomToReleaseVersion( project, document, releaseConfiguration, scmRepository );
-
- if ( simulate )
- {
- File outputFile = new File( project.getFile().getParentFile(), project.getFile().getName() + ".tag" );
- writePom( outputFile, document, releaseConfiguration, project.getModelVersion(), intro, outtro );
- }
- else
- {
- writePom( project.getFile(), document, releaseConfiguration, project.getModelVersion(), intro, outtro,
- scmRepository, provider );
- }
- }
+ return "tag";
}
- private void transformPomToReleaseVersion( MavenProject project, Document document,
- ReleaseConfiguration releaseConfiguration, ScmRepository scmRepository )
- throws ReleaseExecutionException
+ protected void transformScm( MavenProject project, Element rootElement, Namespace namespace,
+ ReleaseConfiguration releaseConfiguration, String projectId,
+ ScmRepository scmRepository )
{
- Element rootElement = document.getRootElement();
- Map mappedVersions = releaseConfiguration.getReleaseVersions();
- Map originalVersions = releaseConfiguration.getOriginalVersions();
- String parentVersion = null;
- Namespace namespace = rootElement.getNamespace();
- if ( project.hasParent() && project.getParentArtifact().isSnapshot() )
- {
- Element parentElement = rootElement.getChild( "parent", namespace );
- Element versionElement = parentElement.getChild( "version", namespace );
- MavenProject parent = project.getParent();
- String key = ArtifactUtils.versionlessKey( parent.getGroupId(), parent.getArtifactId() );
- parentVersion = (String) mappedVersions.get( key );
- if ( parentVersion == null )
- {
- throw new ReleaseExecutionException( "Version for parent '" + parent.getName() + "' was not mapped" );
- }
- versionElement.setText( parentVersion );
- }
-
- String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
- if ( project.getArtifact().isSnapshot() )
- {
- // TODO: what about if version is inherited? shouldn't prompt...
- Element versionElement = rootElement.getChild( "version", namespace );
- String version = (String) mappedVersions.get( projectId );
- if ( version == null )
- {
- throw new ReleaseExecutionException( "Version for '" + project.getName() + "' was not mapped" );
- }
-
- if ( versionElement == null )
- {
- if ( !version.equals( parentVersion ) )
- {
- // we will add this after artifactId
- Element artifactIdElement = rootElement.getChild( "artifactId", namespace );
- int index = rootElement.indexOf( artifactIdElement );
-
- versionElement = new Element( "version", namespace );
- versionElement.setText( version );
- rootElement.addContent( index + 1, new Text( "\n " ) );
- rootElement.addContent( index + 2, versionElement );
- }
- }
- else
- {
- versionElement.setText( version );
- }
- }
-
- rewriteDependencies( project.getDependencies(), rootElement, mappedVersions, originalVersions );
-
- if ( project.getDependencyManagement() != null )
- {
- Element dependencyRoot = rootElement.getChild( "dependencyManagement", namespace );
- if ( dependencyRoot != null )
- {
- rewriteDependencies( project.getDependencyManagement().getDependencies(), dependencyRoot,
- mappedVersions, originalVersions );
- }
- }
-
- if ( project.getBuild() != null )
- {
- Element pluginsRoot = rootElement.getChild( "build", namespace );
- if ( pluginsRoot != null )
- {
- rewritePlugins( project.getBuildPlugins(), pluginsRoot, mappedVersions, originalVersions );
- if ( project.getPluginManagement() != null )
- {
- pluginsRoot = pluginsRoot.getChild( "pluginManagement", namespace );
- if ( pluginsRoot != null )
- {
- rewritePlugins( project.getPluginManagement().getPlugins(), pluginsRoot, mappedVersions,
- originalVersions );
- }
- }
- }
- rewriteExtensions( project.getBuildExtensions(), pluginsRoot, mappedVersions, originalVersions );
- }
-
- if ( project.getReporting() != null )
- {
- Element pluginsRoot = rootElement.getChild( "reporting", namespace );
- if ( pluginsRoot != null )
- {
- rewriteReportPlugins( project.getReportPlugins(), pluginsRoot, mappedVersions, originalVersions );
- }
- }
-
// If SCM is null in original model, it is inherited, no mods needed
if ( project.getScm() != null )
{
@@ -271,233 +59,38 @@
ScmTranslator translator = (ScmTranslator) scmTranslators.get( scmRepository.getProvider() );
if ( translator != null )
{
- rewriteScm( project.getScm(), releaseConfiguration.getReleaseLabel(), scmRoot, namespace,
- translator );
- }
- else
- {
- getLogger().debug( "No SCM translator found - skipping rewrite" );
- }
- }
- }
- }
-
- private void rewriteScm( Scm scm, String tag, Element scmRoot, Namespace namespace, ScmTranslator translator )
- {
- scmRoot.getChild( "connection", namespace ).setText( translator.translateTagUrl( scm.getConnection(), tag ) );
+ Scm scm = project.getScm();
+ String tag = releaseConfiguration.getReleaseLabel();
+ scmRoot.getChild( "connection", namespace ).setText(
+ translator.translateTagUrl( scm.getConnection(), tag ) );
- Element devConnection = scmRoot.getChild( "developerConnection", namespace );
- if ( devConnection != null )
- {
- devConnection.setText( translator.translateTagUrl( scm.getDeveloperConnection(), tag ) );
- }
-
- Element url = scmRoot.getChild( "url", namespace );
- if ( url != null )
- {
- url.setText( translator.translateTagUrl( scm.getUrl(), tag ) );
- }
- }
-
- private void rewriteDependencies( List dependencies, Element dependencyRoot, Map mappedVersions,
- Map originalVersions )
- throws ReleaseExecutionException
- {
- if ( dependencies != null )
- {
- for ( Iterator i = dependencies.iterator(); i.hasNext(); )
- {
- Dependency dep = (Dependency) i.next();
-
- updateDomVersion( dep.getGroupId(), dep.getArtifactId(), mappedVersions, dep.getVersion(),
- originalVersions, "dependencies", "dependency", dependencyRoot );
- }
- }
- }
-
- private void rewritePlugins( List plugins, Element pluginRoot, Map mappedVersions, Map originalVersions )
- throws ReleaseExecutionException
- {
- if ( plugins != null )
- {
- for ( Iterator i = plugins.iterator(); i.hasNext(); )
- {
- Plugin plugin = (Plugin) i.next();
-
- // We can ignore plugins whose version is assumed, they are only written into the release pom
- if ( plugin.getVersion() != null )
- {
- updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions, plugin.getVersion(),
- originalVersions, "plugins", "plugin", pluginRoot );
- }
- }
- }
- }
-
- private void rewriteExtensions( List extensions, Element extensionRoot, Map mappedVersions, Map originalVersions )
- throws ReleaseExecutionException
- {
- if ( extensions != null )
- {
- for ( Iterator i = extensions.iterator(); i.hasNext(); )
- {
- Extension extension = (Extension) i.next();
-
- updateDomVersion( extension.getGroupId(), extension.getArtifactId(), mappedVersions,
- extension.getVersion(), originalVersions, "extensions", "extension", extensionRoot );
- }
- }
- }
-
- private void rewriteReportPlugins( List plugins, Element pluginRoot, Map mappedVersions, Map originalVersions )
- throws ReleaseExecutionException
- {
- if ( plugins != null )
- {
- for ( Iterator i = plugins.iterator(); i.hasNext(); )
- {
- ReportPlugin plugin = (ReportPlugin) i.next();
-
- // We can ignore plugins whose version is assumed, they are only written into the release pom
- if ( plugin.getVersion() != null )
- {
- updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions, plugin.getVersion(),
- originalVersions, "plugins", "plugin", pluginRoot );
- }
- }
- }
- }
-
- private void updateDomVersion( String groupId, String artifactId, Map mappedVersions, String version,
- Map originalVersions, String groupTagName, String tagName, Element dependencyRoot )
- throws ReleaseExecutionException
- {
- String key = ArtifactUtils.versionlessKey( groupId, artifactId );
- String mappedVersion = (String) mappedVersions.get( key );
-
- if ( mappedVersion != null && version.equals( originalVersions.get( key ) ) )
- {
- getLogger().debug( "Updating " + artifactId + " to " + mappedVersion );
-
- try
- {
- XPath xpath = XPath.newInstance( "./" + groupTagName + "/" + tagName + "[groupId='" + groupId +
- "' and artifactId='" + artifactId + "']" );
-
- Element dependency = (Element) xpath.selectSingleNode( dependencyRoot );
- Element versionElement = dependency.getChild( "version" );
+ Element devConnection = scmRoot.getChild( "developerConnection", namespace );
+ if ( devConnection != null )
+ {
+ devConnection.setText( translator.translateTagUrl( scm.getDeveloperConnection(), tag ) );
+ }
- // avoid if in management
- if ( versionElement != null )
- {
- versionElement.setText( mappedVersion );
+ Element url = scmRoot.getChild( "url", namespace );
+ if ( url != null )
+ {
+ url.setText( translator.translateTagUrl( scm.getUrl(), tag ) );
+ }
}
- }
- catch ( JDOMException e )
- {
- throw new ReleaseExecutionException( "Unable to locate " + tagName + " to process in document", e );
- }
- }
- else
- {
- // We can ignore those we don't know of, unless they are snapshots
- if ( ArtifactUtils.isSnapshot( version ) )
- {
- throw new ReleaseExecutionException(
- "Version '" + version + "' for " + tagName + " '" + key + "' was not mapped" );
- }
- }
- }
-
- private void writePom( File pomFile, Document document, ReleaseConfiguration releaseConfiguration,
- String modelVersion, String intro, String outtro, ScmRepository repository,
- ScmProvider provider )
- throws ReleaseExecutionException
- {
- try
- {
- if ( releaseConfiguration.isUseEditMode() || provider.requiresEditMode() )
- {
- EditScmResult result =
- provider.edit( repository, new ScmFileSet( releaseConfiguration.getWorkingDirectory(), pomFile ) );
-
- if ( !result.isSuccess() )
+ else
{
- throw new ReleaseScmCommandException( "Unable to enable editing on the POM", result );
+ getLogger().debug( "No SCM translator found - skipping rewrite" );
}
}
}
- catch ( ScmException e )
- {
- throw new ReleaseExecutionException( "An error occurred enabling edit mode: " + e.getMessage(), e );
- }
-
- writePom( pomFile, document, releaseConfiguration, modelVersion, intro, outtro );
}
- private void writePom( File pomFile, Document document, ReleaseConfiguration releaseConfiguration,
- String modelVersion, String intro, String outtro )
- throws ReleaseExecutionException
+ protected Map getOriginalVersionMap( ReleaseConfiguration releaseConfiguration )
{
- Element rootElement = document.getRootElement();
-
- if ( releaseConfiguration.isAddSchema() )
- {
- Namespace pomNamespace = Namespace.getNamespace( "", "http://maven.apache.org/POM/" + modelVersion );
- rootElement.setNamespace( pomNamespace );
- Namespace xsiNamespace = Namespace.getNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
- rootElement.addNamespaceDeclaration( xsiNamespace );
-
- if ( rootElement.getAttribute( "schemaLocation", xsiNamespace ) == null )
- {
- rootElement.setAttribute( "schemaLocation", "http://maven.apache.org/POM/" + modelVersion +
- " http://maven.apache.org/maven-v" + modelVersion.replace( '.', '_' ) + ".xsd", xsiNamespace );
- }
-
- // the empty namespace is considered equal to the POM namespace, so match them up to avoid extra xmlns=""
- ElementFilter elementFilter = new ElementFilter( Namespace.getNamespace( "" ) );
- for ( Iterator i = rootElement.getDescendants( elementFilter ); i.hasNext(); )
- {
- Element e = (Element) i.next();
- e.setNamespace( pomNamespace );
- }
- }
-
- Writer writer = null;
- try
- {
- // TODO: better handling of encoding. Currently the definition is not written out and is embedded in the intro if it already existed
- // TODO: the XMLOutputter and Writer need to have their encodings aligned.
- writer = new FileWriter( pomFile );
-
- if ( intro != null )
- {
- writer.write( intro );
- }
-
- Format format = Format.getRawFormat();
- format.setLineSeparator( LS );
- XMLOutputter out = new XMLOutputter( format );
- out.output( document.getRootElement(), writer );
-
- if ( outtro != null )
- {
- writer.write( outtro );
- }
- }
- catch ( IOException e )
- {
- throw new ReleaseExecutionException( "Error writing POM: " + e.getMessage(), e );
- }
- finally
- {
- IOUtil.close( writer );
- }
+ return releaseConfiguration.getOriginalVersions();
}
- public void simulate( ReleaseConfiguration releaseConfiguration )
- throws ReleaseExecutionException
+ protected Map getNextVersionMap( ReleaseConfiguration releaseConfiguration )
{
- transform( releaseConfiguration, true );
+ return releaseConfiguration.getReleaseVersions();
}
}
Modified: maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml?rev=398224&r1=398223&r2=398224&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml Sat Apr 29 12:29:10 2006
@@ -155,6 +155,11 @@
<role>org.apache.maven.plugins.release.phase.ReleasePhase</role>
<role-hint>rewrite-poms-for-development</role-hint>
<implementation>org.apache.maven.plugins.release.phase.RewritePomsForDevelopmentPhase</implementation>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator</role>
+ </requirement>
+ </requirements>
</component>
<component>
<role>org.apache.maven.plugins.release.config.ReleaseConfigurationStore</role>
Modified: maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java?rev=398224&r1=398223&r2=398224&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java Sat Apr 29 12:29:10 2006
@@ -31,14 +31,19 @@
import org.apache.maven.model.Dependency;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.plugins.release.config.ReleaseConfiguration;
+import org.apache.maven.plugins.release.scm.DefaultScmRepositoryConfigurator;
+import org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.ProjectSorter;
+import org.apache.maven.scm.manager.ScmManager;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.util.FileUtils;
+import org.jmock.cglib.Mock;
import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -59,6 +64,8 @@
protected ArtifactRepository localRepository;
+ protected ReleasePhase phase;
+
protected void setUp()
throws Exception
{
@@ -176,5 +183,42 @@
releaseConfiguration.setReactorProjects( projects );
return releaseConfiguration;
+ }
+
+ protected void setMockScmManager( Mock scmManagerMock )
+ throws Exception
+ {
+ ScmManager scmManager = (ScmManager) scmManagerMock.proxy();
+ DefaultScmRepositoryConfigurator configurator =
+ (DefaultScmRepositoryConfigurator) lookup( ScmRepositoryConfigurator.ROLE );
+ configurator.setScmManager( scmManager );
+ }
+
+ protected static Map getProjectsAsMap( List reactorProjects )
+ {
+ Map map = new HashMap();
+ for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
+ {
+ MavenProject project = (MavenProject) i.next();
+
+ map.put( ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() ), project );
+ }
+ return map;
+ }
+
+ protected boolean compareFiles( List reactorProjects )
+ throws IOException
+ {
+ for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
+ {
+ MavenProject project = (MavenProject) i.next();
+
+ File actualFile = project.getFile();
+ String actual = FileUtils.fileRead( actualFile );
+ File expectedFile = new File( actualFile.getParentFile(), "expected-pom.xml" );
+ String expected = FileUtils.fileRead( expectedFile );
+ assertEquals( "Check the transformed POM", expected, actual );
+ }
+ return true;
}
}