Hi Stephen,

it is allowed to manually override the version in a child project.
This does not defeat the point of depMgmt, in my opinion. So why should
the versions-maven-plugin should be able to do it, too?

We have a parent pom with "official" versions but want to build child
projects with "unofficial" versions. This is where we want to override
the version in the child pom.

I am searching for a solution for a build pipeline where a project A is
build using the latest version of project B. Perhaps I can achieve what
I want by using some kind of "unofficial" parent pom whose versions are
updated as you suggested. I will see.

I tried to patch your plugin such that it is able to add a version
element to the pom. Perhaps you'll want to use it if you change your mind.

Thanks for your answers.

Best regards
Achim


On 22.05.2012 16:28, Stephen Connolly wrote:
> The guiding principal is that only explicit versions are modified. If
> it introduced an override into project A then that would defeat the
> point of depMgmt in P.
> 
> If you run the plugin on project P's pom, it will process the deps and
> the depMgmt by default, i.e. see
> 
>     
> http://mojo.codehaus.org/versions-maven-plugin/use-latest-versions-mojo.html#processDependencyManagement
> 
> -Stephen
> 
> On 22 May 2012 14:32, Achim Abeling <achim.abel...@freenet-ag.de> wrote:
>> Is there a reason why the plugin cannot update versions from managed
>> dependencies?
>>
>> If I have to define a version in my project A for dependency B the
>> dependencyManagement in my parent pom gets rather useless, isn't it?
>>
>> Best regards
>> Achim
>>
>> On 22.05.2012 13:54, Stephen Connolly wrote:
>>> If you don't specify the version in the pom you are running on, then
>>> it will not add the version.
>>>
>>> If you run against the P pom then it will update that one
>>>
>>> On 22 May 2012 11:36, Achim Abeling <achim.abel...@freenet-ag.de> wrote:
>>>> Hi,
>>>>
>>>> we have the following scenario:
>>>>
>>>> - project A has project P with version 1 as parent.
>>>> - project P in version 1 defines project B with version 1 in it's
>>>> dependencyManagement section.
>>>> - project A has project B as dependency without defining the version and
>>>> therefore inherits the version from the parent project P
>>>>
>>>> Normally, project A uses version 1 of project B.
>>>>
>>>> Now, there are newer versions of project B in the repository, say version 
>>>> 2.
>>>>
>>>> Using
>>>> # mvn versions:display-dependency-updates
>>>> on project A correctly says something like
>>>>
>>>> [INFO] The following dependencies in Dependency Management have newer
>>>> versions:
>>>> ...
>>>> [INFO]   project B ..................... 1 -> 2
>>>>
>>>> But calling
>>>> # mvn versions:use-latest-versions
>>>> does not change the pom.xml.
>>>>
>>>> I would expect the versions-plugin to add
>>>> <version>2</version>
>>>> to the dependency definition for project B.
>>>>
>>>> What can I do?
>>>>
>>>>
>>>> Thanks
>>>> Achim
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe from this list, please visit:
>>>>
>>>>    http://xircles.codehaus.org/manage_email
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe from this list, please visit:
>>>
>>>     http://xircles.codehaus.org/manage_email
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>>    http://xircles.codehaus.org/manage_email
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
> 
>     http://xircles.codehaus.org/manage_email
> 
> 
Index: src/test/java/org/codehaus/mojo/versions/api/PomHelperTest.java
===================================================================
--- src/test/java/org/codehaus/mojo/versions/api/PomHelperTest.java	(Revision 16684)
+++ src/test/java/org/codehaus/mojo/versions/api/PomHelperTest.java	(Arbeitskopie)
@@ -5,7 +5,10 @@
 import org.codehaus.stax2.XMLInputFactory2;
 
 import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+
 import java.io.File;
+import java.io.IOException;
 import java.net.URL;
 
 /**
@@ -118,4 +121,37 @@
 
     }
 
+    public void test_setDependencyVersionWithoutVersionElement() 
+            throws XMLStreamException, IOException
+    {
+        URL url = getClass().getResource( "PomHelperTest.testSetDependencyVersion.pom.xml" );
+        StringBuffer input = PomHelper.readXmlFile( new File( url.getPath() ) );
+
+        XMLInputFactory inputFactory = XMLInputFactory2.newInstance();
+        inputFactory.setProperty( XMLInputFactory2.P_PRESERVE_LOCATION, Boolean.TRUE );
+
+        ModifiedPomXMLEventReader pom = new ModifiedPomXMLEventReader( input, inputFactory );
+        
+        boolean result = PomHelper.setDependencyVersion(pom, "org.codehaus.mojo", "test", "1", "2");
+        assertTrue(result);
+        
+        System.out.println(pom.asStringBuffer());
+    }
+    
+    public void test_setDependencyVersionWithVersionElement() 
+            throws XMLStreamException, IOException
+    {
+        URL url = getClass().getResource( "PomHelperTest.testSetDependencyVersion2.pom.xml" );
+        StringBuffer input = PomHelper.readXmlFile( new File( url.getPath() ) );
+
+        XMLInputFactory inputFactory = XMLInputFactory2.newInstance();
+        inputFactory.setProperty( XMLInputFactory2.P_PRESERVE_LOCATION, Boolean.TRUE );
+
+        ModifiedPomXMLEventReader pom = new ModifiedPomXMLEventReader( input, inputFactory );
+        
+        boolean result = PomHelper.setDependencyVersion(pom, "org.codehaus.mojo", "test", "1", "2");
+        assertTrue(result);
+        
+        System.out.println(pom.asStringBuffer());
+    }
 }
Index: src/test/resources/org/codehaus/mojo/versions/api/PomHelperTest.testSetDependencyVersion.pom.xml
===================================================================
--- src/test/resources/org/codehaus/mojo/versions/api/PomHelperTest.testSetDependencyVersion.pom.xml	(Revision 0)
+++ src/test/resources/org/codehaus/mojo/versions/api/PomHelperTest.testSetDependencyVersion.pom.xml	(Revision 0)
@@ -0,0 +1,24 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <!--parent>
+        <groupId>org.myorg</groupId>
+        <artifactId>myorg-parent</artifactId>
+        <version>3.0-SNAPSHOT</version>
+    </parent-->
+    <groupId>localhost</groupId>
+    <artifactId>it-set-004</artifactId>
+    <packaging>jar</packaging>
+    <version>${V1234567890123456789012}</version>
+    <name>set version for pom with no dependencies</name>
+    
+    <dependencies>
+      <dependency>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>test</artifactId>
+<!--         <version>1</version> -->
+      </dependency>
+    </dependencies>
+    
+</project>
Index: src/test/resources/org/codehaus/mojo/versions/api/PomHelperTest.testSetDependencyVersion2.pom.xml
===================================================================
--- src/test/resources/org/codehaus/mojo/versions/api/PomHelperTest.testSetDependencyVersion2.pom.xml	(Revision 0)
+++ src/test/resources/org/codehaus/mojo/versions/api/PomHelperTest.testSetDependencyVersion2.pom.xml	(Revision 0)
@@ -0,0 +1,24 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <!--parent>
+        <groupId>org.myorg</groupId>
+        <artifactId>myorg-parent</artifactId>
+        <version>3.0-SNAPSHOT</version>
+    </parent-->
+    <groupId>localhost</groupId>
+    <artifactId>it-set-004</artifactId>
+    <packaging>jar</packaging>
+    <version>${V1234567890123456789012}</version>
+    <name>set version for pom with no dependencies</name>
+    
+    <dependencies>
+      <dependency>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>test</artifactId>
+        <version>1</version>
+      </dependency>
+    </dependencies>
+    
+</project>
Index: src/main/java/org/codehaus/mojo/versions/api/PomHelper.java
===================================================================
--- src/main/java/org/codehaus/mojo/versions/api/PomHelper.java	(Revision 16684)
+++ src/main/java/org/codehaus/mojo/versions/api/PomHelper.java	(Arbeitskopie)
@@ -515,6 +515,8 @@
                     haveGroupId = false;
                     haveArtifactId = false;
                     haveOldVersion = false;
+                    
+                    pom.mark(2);
                 }
                 else if ( inMatchScope && matchTargetRegex.matcher( path ).matches() )
                 {
@@ -555,11 +557,20 @@
                 }
                 else if ( matchScopeRegex.matcher( path ).matches() )
                 {
+                    pom.mark(3);
+                    
                     if ( inMatchScope && pom.hasMark( 0 ) && pom.hasMark( 1 ) && haveGroupId && haveArtifactId &&
                         haveOldVersion )
                     {
                         pom.replaceBetween( 0, 1, newVersion );
                         madeReplacement = true;
+                    } else if (pom.hasMark(2) && pom.hasMark(3)) {
+                        /* no version element found */
+                        String oldContent = pom.getBetween(2, 3);
+                        String newContent = oldContent 
+                                + "<version>" + newVersion + "</version>"; 
+                        pom.replaceBetween(2, 3, newContent);
+                        madeReplacement = true;
                     }
                     pom.clearMark( 0 );
                     pom.clearMark( 1 );
Index: src/main/java/org/codehaus/mojo/versions/rewriting/ModifiedPomXMLEventReader.java
===================================================================
--- src/main/java/org/codehaus/mojo/versions/rewriting/ModifiedPomXMLEventReader.java	(Revision 16684)
+++ src/main/java/org/codehaus/mojo/versions/rewriting/ModifiedPomXMLEventReader.java	(Arbeitskopie)
@@ -47,7 +47,7 @@
     /**
      * Field MAX_MARKS
      */
-    private static final int MAX_MARKS = 3;
+    private static final int MAX_MARKS = 4;
 
     /**
      * Field pom

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to