diff -u -r -x target -x .svn -x site -x '*~' maven-install/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java maven-install-plugin.patched/src/main/java/org/apache/maven/plugin/install/InstallMojo.java --- maven-install/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java 2008-10-28 09:18:00.000000000 +0100 +++ maven-install-plugin.patched/src/main/java/org/apache/maven/plugin/install/InstallMojo.java 2008-10-28 09:23:54.000000000 +0100 @@ -25,7 +25,15 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.artifact.ProjectArtifactMetadata; +import java.io.BufferedReader; import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Properties; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.Iterator; import java.util.List; @@ -69,12 +77,73 @@ private Artifact artifact; /** - * @parameter expression="${project.attachedArtifacts} + * @parameter expression="${project.attachedArtifacts}" * @required * @readonly */ private List attachedArtifacts; + /** + * @parameter expression="${project.properties}" + * @required + * @readonly + */ + private Properties projectProperties; + + /** + * @parameter expression="${project.build.directory}" + * @required + * @readonly + */ + private File targetDirectory; + + + private File insertProperties(File thePom) { + try { + BufferedReader br = new BufferedReader(new FileReader(thePom)); + StringBuffer buf = new StringBuffer(); + Pattern p = Pattern.compile("\\$\\{[a-zA-Z0-9._-]+\\}"); + String s = null; + boolean changed = false; + Properties systemProperties = System.getProperties(); + while((s = br.readLine()) != null) { + Matcher m = p.matcher(s); + while (m.find()) { + String match = m.group(); + String key = match.substring(2, match.length()-1); + String value = null; + if (projectProperties != null && projectProperties.containsKey(key)) { + value = projectProperties.getProperty(key); + } else if (systemProperties.containsKey(key)) { + value = systemProperties.getProperty(key); + } + if (value != null) { + s = s.replaceAll("\\$\\{" + key + "\\}", value); + changed = true; + } + } + buf.append(s).append("\n"); + } + if (changed) { + File target = new File(targetDirectory.getAbsolutePath() + File.separator + "maven-install-plugin"); + if (!target.exists()) { + target.mkdirs(); + } + File newPom = new File(target, "pom.xml"); + FileWriter fw = new FileWriter(newPom); + fw.write(buf.toString()); + fw.flush(); + fw.close(); + thePom = newPom; + } + } catch (FileNotFoundException e) { + getLog().warn(e.getMessage()); + } catch (IOException e) { + getLog().warn(e.getMessage()); + } + return thePom; + } + public void execute() throws MojoExecutionException { @@ -90,6 +159,7 @@ try { + pomFile = insertProperties(pomFile); if ( isPomArtifact ) { installer.install( pomFile, artifact, localRepository ); diff -u -r -x target -x .svn -x site -x '*~' maven-install/maven-install-plugin/src/test/resources/unit/basic-install-checksum/plugin-config.xml maven-install-plugin.patched/src/test/resources/unit/basic-install-checksum/plugin-config.xml --- maven-install/maven-install-plugin/src/test/resources/unit/basic-install-checksum/plugin-config.xml 2008-10-28 09:17:59.000000000 +0100 +++ maven-install-plugin.patched/src/test/resources/unit/basic-install-checksum/plugin-config.xml 2008-10-28 09:23:54.000000000 +0100 @@ -27,6 +27,7 @@ ${localRepository} + ${basedir}/target/test-classes/ true diff -u -r -x target -x .svn -x site -x '*~' maven-install/maven-install-plugin/src/test/resources/unit/basic-install-test/plugin-config.xml maven-install-plugin.patched/src/test/resources/unit/basic-install-test/plugin-config.xml --- maven-install/maven-install-plugin/src/test/resources/unit/basic-install-test/plugin-config.xml 2008-10-28 09:17:59.000000000 +0100 +++ maven-install-plugin.patched/src/test/resources/unit/basic-install-test/plugin-config.xml 2008-10-28 09:23:54.000000000 +0100 @@ -27,6 +27,7 @@ ${localRepository} + ${basedir}/target/test-classes/ diff -u -r -x target -x .svn -x site -x '*~' maven-install/maven-install-plugin/src/test/resources/unit/basic-install-test-packaging-pom/plugin-config.xml maven-install-plugin.patched/src/test/resources/unit/basic-install-test-packaging-pom/plugin-config.xml --- maven-install/maven-install-plugin/src/test/resources/unit/basic-install-test-packaging-pom/plugin-config.xml 2008-10-28 09:17:59.000000000 +0100 +++ maven-install-plugin.patched/src/test/resources/unit/basic-install-test-packaging-pom/plugin-config.xml 2008-10-28 09:23:54.000000000 +0100 @@ -27,6 +27,7 @@ ${localRepository} + ${basedir}/target/test-classes/ diff -u -r -x target -x .svn -x site -x '*~' maven-install/maven-install-plugin/src/test/resources/unit/basic-install-test-with-attached-artifacts/plugin-config.xml maven-install-plugin.patched/src/test/resources/unit/basic-install-test-with-attached-artifacts/plugin-config.xml --- maven-install/maven-install-plugin/src/test/resources/unit/basic-install-test-with-attached-artifacts/plugin-config.xml 2008-10-28 09:17:59.000000000 +0100 +++ maven-install-plugin.patched/src/test/resources/unit/basic-install-test-with-attached-artifacts/plugin-config.xml 2008-10-28 09:23:54.000000000 +0100 @@ -31,6 +31,7 @@ ${localRepository} + ${basedir}/target/test-classes/ diff -u -r -x target -x .svn -x site -x '*~' maven-install/maven-install-plugin/src/test/resources/unit/configured-install-test/plugin-config.xml maven-install-plugin.patched/src/test/resources/unit/configured-install-test/plugin-config.xml --- maven-install/maven-install-plugin/src/test/resources/unit/configured-install-test/plugin-config.xml 2008-10-28 09:17:59.000000000 +0100 +++ maven-install-plugin.patched/src/test/resources/unit/configured-install-test/plugin-config.xml 2008-10-28 09:23:54.000000000 +0100 @@ -28,6 +28,7 @@ true ${localRepository} + ${basedir}/target/test-classes/