Pergunta

Im having a problem with a multimodule project in maven/jenkins. For example my structure is like this:

---ProjectA
----pom.xml
--------ModuleA
---------pom.xml
--------ModuleB
---------pom.xml

---ProjectB
-----pom.xml

For example ModuleA has a dependency for something in ProjectB which is defined in ModuleA's pom except for the version which is only defined as property and is inherited from ProjectA's properties section.

I want to automate the release process to get rid of all the manual update of versions in all the poms. So after making a release of ProjectB I what to bump all references in ProjectA.

EDIT More accurate I want to Release ProjectB which has to include a release of ProjectA (because of dependencies) and in the new Snapshots of ProjectA I want references to the newest ProjectB there is.

The maven plugin versions does this pretty well if one would specify the dependency and the version number in the same pom. My problem as you can see is that (I'm speculating) when version plugin tries to check the property field in ProjectA's pom the property can't be associated with a dependency. And I guess that versions plugin looks on the effective pom because it CAN find that the dependency in ModuleA's pom should be updated. It just can't update it due to the fact that its not defined there.

Would be much obliged for a solution which could keep my properties in the parent pom.

Thanks

Foi útil?

Solução

Ok. SO I think I've worked something out, but i'll post it here for others to see.

So the thing I think is the problem is that the autoLinkItem only searches the current file for linkage and if you want a property to get assosiated with a dependency not specified in the same file one could explicitly tell the plugin in this.

Like this:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>1.2</version>
    <configuration>
        <properties>
            <property>
                <name>basis.version</name>
                <dependencies>
                    <dependency>
                        <groupId>com.mycompany.app.basis</groupId>
                        <artifactId>ModuleBasis</artifactId>
                    </dependency>
                </dependencies>
            </property>
        </properties>
        <includeProperties>basis.version</includeProperties>
        <generateBackupPoms>false</generateBackupPoms>
        <allowSnapshots>true</allowSnapshots>
    </configuration>
</plugin>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top