Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

pom-maven-plugin

...

I

...

created

...

a

...

new

...

MOJO

...

called

...

pom-maven-plugin

...

which

...

aims

...

to

...

help

...

with

...

POM

...

tasks

...

in

...

large

...

projects.

...

Currently

...

it

...

is

...

located

...

in

...

Sandbox:

...

https://svn.codehaus.org/mojo/trunk/sandbox/pom-maven-plugin

...

You

...

need

...

to

...

check

...

it

...

out

...

and

...

do

...

"mvn

...

install".

...

After  that you are ready to use the plugin.

Refactoring POMs

There is a goal for refactoring POMs in a project called "pom:refactor".

...

You

...

should

...

call

...

this

...

goal

...

on

...

your

...

toplevel

...

project.

...

Examples:

...

  • mvn

...

  • pom:refactor

...

  • -DartifactId=myArtifact

...

  • -DnewVersion=2.1

...


  • This

...

  • will

...

  • set

...

  • the

...

  • version

...

  • of

...

  • all

...

  • occurrences

...

  • of

...

  • "myArtifact"

...

  • in

...

  • your

...

  • POMs

...

  • to

...

  • "2.1"

...

  • including

...

  • all

...

  • dependencies

...

  • that

...

  • point

...

  • to

...

  • the

...

  • current

...

  • version.

...

  • mvn

...

  • pom:refactor

...

  • -DartifactId=myArtifact

...

  • -Dversion=

...

  • *

...

  • -DnewVersion=2.1

...


  • This

...

  • will

...

  • set

...

  • the

...

  • version

...

  • of

...

  • all

...

  • occurrences

...

  • of

...

  • "myArtifact"

...

  • in

...

  • your

...

  • POMs

...

  • to

...

  • "2.1"

...

  • including

...

  • all

...

  • dependencies

...

  • that

...

  • point

...

  • to

...

  • the

...

  • current

...

  • version.

...

  • mvn

...

  • pom:refactor

...

  • -DartifactId=myArtifact

...

  • -Dversion=2.1-SNAPSHOT

...

  • -DnewVersion=2.1

...


  • This

...

  • will

...

  • set

...

  • the

...

  • version

...

  • of

...

  • all

...

  • occurrences

...

  • of

...

  • "myArtifact"

...

  • in

...

  • your

...

  • POMs

...

  • where

...

  • current

...

  • version

...

  • is

...

  • "2.1-SNAPSHOT"

...

  • to

...

  • "2.1"

...

  • mvn

...

  • pom:refactor

...

  • -DartifactId=

...

  • *

...

  • -DnewGroupId=foo.bar

...


  • This

...

  • will

...

  • change

...

  • the

...

  • groupId

...

  • of

...

  • all

...

  • your

...

  • modules

...

  • to

...

  • "foo.bar"

...

  • (and

...

  • fix

...

  • all

...

  • according

...

  • dependencies).

...

  • mvn

...

  • pom:refactor

...

  • -DartifactId=myArtifact

...

  • -DgroupId=foo.bar

...

  • -DnewScope=test

...


  • This

...

  • will

...

  • set

...

  • the

...

  • scope

...

  • of

...

  • all

...

  • dependencies

...

  • on

...

  • "foo.bar:myArtifact"

...

  • to

...

  • "test"

...

In

...

general

...

you

...

define

...

a

...

matcher

...

for

...

projects,

...

dependencies,

...

etc.

...

with

...

  • artifactId

...

  • (required

...

  • parameter,

...

  • set

...

  • to

...

  • *

...

  • to

...

  • match

...

  • any

...

  • artifactId)

...

  • groupId

...

  • (${project.groupId}

...

  • if

...

  • omitted)

...

  • version

...

  • (current

...

  • version

...

  • of

...

  • matching

...

  • project

...

  • in

...

  • reactor

...

  • if

...

  • omitted,

...

  • use

...

  • *

...

  • to

...

  • match

...

  • any

...

  • version)

...

  • scope

...

  • (scope

...

  • to

...

  • match

...

  • in

...

  • dependencies,

...

  • any

...

  • if

...

  • omitted)

...

  • classifier

...

  • (classifier

...

  • to

...

  • match

...

  • in

...

  • dependencies,

...

  • any

...

  • if

...

  • omitted)

...

For

...

all

...

this

...

parameters

...

you

...

can

...

use

...

glob-patterns

...

(using

...

*

...

as

...

wildcard

...

and

...

?).

...

Please

...

note

...

that

...

your

...

shell

...

might

...

expand

...

such

...

patterns

...

with

...

the

...

matching

...

files

...

in

...

your

...

current

...

directory

...

so

...

you

...

might

...

need

...

to

...

escape

...

this

...

properly.

...

To

...

express

...

what

...

to

...

change

...

for

...

the

...

matching

...

sections,

...

you

...

must

...

specify

...

at

...

least

...

one

...

of

...

  • newArtifactId
  • newGroupId
  • newVersion
  • newScope
  • newClassifier

Please also note that the plugin takes care about disributionManagement and variables. In such case it tries to perform the modification where the actual value is defined. However you might be able to create wired constructs where the strategy will fail. But it should work for regular usecases.