mplwork
mplwork

Reputation: 1140

Maven: how to find parent pom?

I am in the process of learning maven and setting up a build environment. One thing I can't figure out, how to set up a project such that it finds a company-wide parent pom. I would like this to work:

$ git clone some_project
$ cd some_project
$ mvn install some_project

The some_project/pom.xml should reference a company-wide pom which it could get from a company maven repository. But where do I specify the company repository?

Putting it in some_project/pom.xml would probably do but then the location is hardcoded in many projects, which could lead to quite some trouble down the road should the server location change.

Having it in settings.xml could work I guess but would break the above requirement.

Edit

Thanks for the answers. I am going with the settings.xml solution although it won't allow the above sequence of commands. Seems like there is no solution that does not require some sort of initial manual setup and of the proposed solutions settings.xml is the simplest to me. Therefore I can't decide which of the two answers to accept. Both are equally good.

Here's the part from settings.xml I came up with:

...
<profiles>
    <profile>
        <activation>
            <property>
                <name>!skip</name>
            </property>
        </activation>

        <repositories>
            <repository>
                <id>internalrepo</id>
                <name>Central Internal Maven Repository</name>
                <url>http://server.company.example.com/mvnrepo</url>
            </repository>
        </repositories>

    </profile>
</profiles>
...

Upvotes: 1

Views: 7220

Answers (2)

Guillaume Darmont
Guillaume Darmont

Reputation: 5018

Putting the company repository URL in settings.xml is considered a good practice. You can also have associated username/password needed for repository upload.

If you care about repository relocation, you must rely on a good DNS choice (repository.mycompany.com is generaly fine) and a good usage of web servers rewrite rules.

Upvotes: 1

Jeen Broekstra
Jeen Broekstra

Reputation: 22042

I'd recommend putting it in settings.xml.

If your company runs its own maven repo, it makes sense to have this configured in settings.xml - especially as you may need to add things like access credentials, which of course should never appear in a (shared) project pom. The only downside is that each user will have to jump through one additional (one-time) hoop when first installing their maven client.

An alternative is to not actually get the root pom from the company maven repo initially, but instead install it directly into your local repo from git. If your root pom is itself a maven project (which is not uncommon) and is available in git, simply clone it and run mvn install.

Upvotes: 3

Related Questions