Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to display dependency updates only for release versions

Tags:

When I'm running versions:display-dependency-updates, it will show all the newest beta / milestone versions of my dependencies. I prefer using "release" packages.

versions:use-latest-releases talks about "replacing" with the latest release version. However, I prefer updating the versions manually.

Can I run the versions plugin to give me a report on the latest "release" versions of my dependencies and plugins?

I am referring to the "type" of the package as listed on mvnrepository.org

like image 981
Alex R Avatar asked Jul 01 '16 13:07

Alex R


People also ask

What happens if we don't specify version in Pom?

That being said, if the version is not given, then the version provided in the dependencyManagement or the parent pom will be used. For example: in the pom (only important sections are mentioned) given below, no version is provided for the artifact jstl.

How do I know what version of POM I have?

Check the following goals: versions:display-dependency-updates scans a project's dependencies and produces a report of those dependencies which have newer versions available. versions:display-plugin-updates scans a project's plugins and produces a report of those plugins which have newer versions available.

How do I change the version of POM XML?

mvn scm:checkin -Dincludes=pom. xml -Dmessage="Setting version, preping for release." Then you can perform your release (I recommend the maven-release-plugin), after which you can set your new version and commit it as above. The versions plugin is your friend.


2 Answers

Two steps

Add rulesUri to the plugin configuration

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>2.3</version>
    <configuration>
        <rulesUri>file:///${project.basedir}/rules.xml</rulesUri>
    </configuration>
    <executions>
        <execution>
        <phase>compile</phase>
        <goals>
            <goal>display-dependency-updates</goal>
            <goal>display-plugin-updates</goal>
        </goals>
        </execution>
    </executions>
</plugin>

Add the rules.xml file to your project root directory.

<?xml version="1.0" encoding="UTF-8"?>
<ruleset xmlns="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" comparisonMethod="maven" xsi:schemaLocation="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0 http://mojo.codehaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsd">
    <ignoreVersions>
        <!-- Ignore Alpha's, Beta's, release candidates and milestones -->
        <ignoreVersion type="regex">(?i).*Alpha(?:-?\d+)?</ignoreVersion>
        <ignoreVersion type="regex">(?i).*a(?:-?\d+)?</ignoreVersion>
        <ignoreVersion type="regex">(?i).*Beta(?:-?\d+)?</ignoreVersion>
        <ignoreVersion type="regex">(?i).*-B(?:-?\d+)?</ignoreVersion>
        <ignoreVersion type="regex">(?i).*RC(?:-?\d+)?</ignoreVersion>
        <ignoreVersion type="regex">(?i).*CR(?:-?\d+)?</ignoreVersion>
        <ignoreVersion type="regex">(?i).*M(?:-?\d+)?</ignoreVersion>
    </ignoreVersions>
    <rules>
    </rules>
</ruleset>

The regex filters out the unstable releases. You can also target rules for specific dependencies, see:

http://blog.xebia.com/keeping-dependencies-up-to-date-in-maven/

https://gist.github.com/seahrh/b13f4f3d618ad7c817038e0bc124ef29

Version rules will also stay for future releases of the plugin.

like image 172
ruhong Avatar answered Sep 29 '22 05:09

ruhong


Maybe I misunderstand a thing but if I use mvn versions:display-dependency-updates it will produce an output like this:

~/ws-git/test-project (two-module)$ mvn versions:display-dependency-updates
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Project : Parent
[INFO] Project : Mod-A
[INFO] Project : Mod-B
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Project : Parent 0.1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- versions-maven-plugin:2.2:display-dependency-updates (default-cli) @ project-parent ---
[INFO] The following dependencies in Dependency Management have newer versions:
[INFO]   com.beust:jcommander .................................... 1.35 -> 1.55
[INFO]   com.google.guava:guava ................................ 16.0.1 -> 19.0
[INFO]   junit:junit ............................................. 4.11 -> 4.12
[INFO]   log4j:log4j ............................. 1.2.16 -> 1.2.17-atlassian-1
[INFO]   org.apache.logging.log4j:log4j-api ...................... 2.1 -> 2.6.1
[INFO]   org.apache.logging.log4j:log4j-core ..................... 2.1 -> 2.6.1
[INFO]   org.mockito:mockito-core ........................ 1.9.5 -> 2.0.78-beta
[INFO]   org.testng:testng .................................... 6.8.8 -> 6.9.12
[INFO]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Project : Mod-A 0.1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- versions-maven-plugin:2.2:display-dependency-updates (default-cli) @ mod-a ---
[INFO] The following dependencies in Dependency Management have newer versions:
[INFO]   com.beust:jcommander .................................... 1.35 -> 1.55
[INFO]   com.google.guava:guava ................................ 16.0.1 -> 19.0
[INFO]   junit:junit ............................................. 4.11 -> 4.12
[INFO]   log4j:log4j ............................. 1.2.16 -> 1.2.17-atlassian-1
[INFO]   org.apache.logging.log4j:log4j-api ...................... 2.1 -> 2.6.1
[INFO]   org.apache.logging.log4j:log4j-core ..................... 2.1 -> 2.6.1
[INFO]   org.mockito:mockito-core ........................ 1.9.5 -> 2.0.78-beta
[INFO]   org.testng:testng .................................... 6.8.8 -> 6.9.12
[INFO]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Project : Mod-B 0.1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- versions-maven-plugin:2.2:display-dependency-updates (default-cli) @ mod-b ---
[INFO] The following dependencies in Dependency Management have newer versions:
[INFO]   com.beust:jcommander .................................... 1.35 -> 1.55
[INFO]   com.google.guava:guava ................................ 16.0.1 -> 19.0
[INFO]   junit:junit ............................................. 4.11 -> 4.12
[INFO]   log4j:log4j ............................. 1.2.16 -> 1.2.17-atlassian-1
[INFO]   org.apache.logging.log4j:log4j-api ...................... 2.1 -> 2.6.1
[INFO]   org.apache.logging.log4j:log4j-core ..................... 2.1 -> 2.6.1
[INFO]   org.mockito:mockito-core ........................ 1.9.5 -> 2.0.78-beta
[INFO]   org.testng:testng .................................... 6.8.8 -> 6.9.12
[INFO]
[INFO] No dependencies in Dependencies have newer versions.
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Project : Parent ................................... SUCCESS [  0.791 s]
[INFO] Project : Mod-A .................................... SUCCESS [  0.046 s]
[INFO] Project : Mod-B .................................... SUCCESS [  0.019 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.671 s
[INFO] Finished at: 2016-07-03T22:17:02+02:00
[INFO] Final Memory: 20M/439M
[INFO] ------------------------------------------------------------------------

where you can see things like junit:junit from 4.11 to 4.12 etc. Furthermore the questions is how the versions looks like of your dependencies etc. ?

like image 20
khmarbaise Avatar answered Sep 29 '22 05:09

khmarbaise