You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Daivish Shah <da...@gmail.com> on 2012/03/14 21:29:34 UTC

Which is the BEST Approach to define Global POM.XML

Hi Maven Team,

I am trying to find out what is the best way to define company specific
GLOBAL POM.XML. Which each team can inherit it in EACH Projects.

Can some one provide me guideline on that ? Is that going to be profile or
just simple POM.XML ? And how to inherit that. Please provide me guideline
to implement it. As this is very critical before we implement all projects
with MAVEN.

Thanks,
Daivish.

Re: Which is the BEST Approach to define Global POM.XML

Posted by Anders Hammar <an...@hammar.net>.
I have that in my Nexus staging rules... So that novice Maven users
get hit late in the process. :-)

/Anders

On Thu, Mar 15, 2012 at 11:04, Mark Derricutt <ma...@talios.com> wrote:
> I'm almost tempted to write an enforcer plugin to block repository
> declarations from ANY pom.  Corporate or project....
>
> On Thu Mar 15 22:09:24 2012, Anders Hammar wrote:
>>
>> You should NOT declare repositories (or plugin repositories) in a
>> corporate pom. That should be handled in settings.xml.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Manfred Moser <ma...@mosabuam.com>.
Totally agree.. while we are at it we should right an enforcer rule that 
enforces the use of a repo server..

manfred

On 12-03-15 03:04 AM, Mark Derricutt wrote:
> I'm almost tempted to write an enforcer plugin to block repository 
> declarations from ANY pom.  Corporate or project....
>
> On Thu Mar 15 22:09:24 2012, Anders Hammar wrote:
>> You should NOT declare repositories (or plugin repositories) in a
>> corporate pom. That should be handled in settings.xml.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Mirko Friedenhagen <mf...@gmail.com>.
We have a rule for this :-).

Regards Mirko

On Thu, Mar 15, 2012 at 11:04, Mark Derricutt <ma...@talios.com> wrote:
> I'm almost tempted to write an enforcer plugin to block repository
> declarations from ANY pom.  Corporate or project....
>
>
> On Thu Mar 15 22:09:24 2012, Anders Hammar wrote:
>>
>> You should NOT declare repositories (or plugin repositories) in a
>> corporate pom. That should be handled in settings.xml.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Mark Derricutt <ma...@talios.com>.
I'm almost tempted to write an enforcer plugin to block repository 
declarations from ANY pom.  Corporate or project....

On Thu Mar 15 22:09:24 2012, Anders Hammar wrote:
> You should NOT declare repositories (or plugin repositories) in a
> corporate pom. That should be handled in settings.xml.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Eric Kolotyluk <er...@gmail.com>.
OK, thanks for the tip Anders - that helps clean things up a bit :-)

What about the <distributionManagement> - should that go in the 
Corporate POM, or in the Project POM?

Presumably I would want to override <distributionManagement> in a 
Project POM because my <snapshotRepository> might be on a different 
Repository Manager that is co-located where my SCM and build servers 
were - in a company with disperse development sites. The

Below are my update examples - how do they look now?

Cheers, Eric

- - - - - - - Project POM - - - - - - -

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<!--
       Copyright © My Company 2012

       Proprietary&  Confidential

       This is the top level POM for My Company Maven projects. It contains rules and standards common to all projects.

       Changes:

       2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
         Created initial version for check-in into source control.

       2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
         Reconfigured for Nexus 2.0 on sonatype.
   -->
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>my-company</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>My Company Corporate POM</name>
<description>Corporate Project Object Module for standard conventions and
rules.</description>
<developers>
<developer>
<id>10069959</id>
<name>Eric Kolotyluk</name>
<email>eric.kolotyluk@gmail.com</email>
<organization>My Company Ltd.</organization>
<timezone>Vancouver PDT</timezone>
<roles>
<role>Software Architect</role>
<role>Software Developer</role>
</roles>
</developer>
</developers>
<organization>
<name>My Company</name>
</organization>
<distributionManagement>
<downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
<repository>
<uniqueVersion>false</uniqueVersion>
<id>nexus</id>
<name>My Company Release Repository</name>
<url>http://sonatype:8081/nexus/content/repositories/releases</url>
<layout>default</layout>
</repository>
<snapshotRepository>
<id>nexus</id>
<name>My Company Snapshot Repository</name>
<url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
<layout>default</layout>
</snapshotRepository>
</distributionManagement>
<build>
</build>
<dependencies>
</dependencies>
<reporting>
<plugins>
</plugins>
</reporting>
<dependencyManagement>
</dependencyManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

- - - - - - - Project POM - - - - - - -

<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com</groupId>
<artifactId>my-company</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.my-company</groupId>
<artifactId>intersystem</artifactId>
<version>0.0.2-SNAPSHOT</version>
<packaging>pom</packaging>
<name>My Company Intersystem</name>
<description>Service layer for collaborative, distributed applications and
services</description>
<licenses>
<license>
<name>My Company Intersystem</name>
<url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuidelines/Intersystem/default.aspx</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>10069959</id>
<name>Eric Kolotyluk</name>
<email>eric.kolotyluk@gmail.com</email>
<organization>My Company</organization>
<timezone>Vancouver PDT</timezone>
<roles>
<role>Software Architect</role>
<role>Software Developer</role>
<role>Intersystem Architect</role>
</roles>
</developer>
</developers>
<organization>
<name>My Company</name>
</organization>
<build>
</build>
<dependencies>
</dependencies>
<reporting>
<plugins>
</plugins>
</reporting>
<dependencyManagement>
</dependencyManagement>
<properties>
<net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<modules>
<module>platform.Java</module>
<module>platform.NET</module>
</modules>
</project>





On 2012-03-15 2:09 AM, Anders Hammar wrote:
> You should NOT declare repositories (or plugin repositories) in a
> corporate pom. That should be handled in settings.xml.
>
> /Anders
>
> On Wed, Mar 14, 2012 at 22:22, Eric Kolotyluk<er...@gmail.com>  wrote:
>> What I do is have a top-level POM like (see below), and then I have my top
>> level project POMs reference that (see further below). This may not be the
>> best example, as I am still in the process of building the infrastructure,
>> but
>>
>> 1. I put the Parent POM in its own place in source control and I
>>    manually deploy it with Maven when I make changes.
>> 2. You need to do this before creating any Project POMs that reference
>>    it because they should reference it via Maven and not the file
>>    system - if you work in a large company you will soon discover why.
>> 3. There is of course a bootstrapping issue because now the project
>>    POMs need to know how to find your Repository Manager, which is why
>>    I include that information in the top level (Corporate) POM so
>>    people can use it as a reference.
>> 4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
>> 5. We are still developing our corporate repository infrastructure so
>>    the content of the Corporate POM will evolve over time as our
>>    corporate governance and policies are better codified.
>>
>> Does that help?
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <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/xsd/maven-4.0.0.xsd">
>> <!--
>>        Copyright © My Company 2012
>>
>>        Proprietary&  Confidential
>>
>>        This is the top level POM for My Company Maven projects. It contains
>> rules and standards common to all projects.
>>
>>        Changes:
>>
>>        2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
>>          Created initial version for check-in into source control.
>>
>>        2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
>>          Reconfigured for Nexus 2.0 on sonatype.
>>    -->
>> <modelVersion>4.0.0</modelVersion>
>> <groupId>com</groupId>
>> <artifactId>my-company</artifactId>
>> <version>0.0.1-SNAPSHOT</version>
>> <packaging>pom</packaging>
>> <name>My Company Corporate POM</name>
>> <description>Corporate Project Object Module for standard conventions and
>> rules.</description>
>> <developers>
>> <developer>
>> <id>10069959</id>
>> <name>Eric Kolotyluk</name>
>> <email>eric.kolotyluk@gmail.com</email>
>> <organization>My Company Ltd.</organization>
>> <timezone>Vancouver PDT</timezone>
>> <roles>
>> <role>Software Architect</role>
>> <role>Software Developer</role>
>> </roles>
>> </developer>
>> </developers>
>> <organization>
>> <name>My Company</name>
>> </organization>
>> <distributionManagement>
>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
>> <repository>
>> <uniqueVersion>false</uniqueVersion>
>> <id>nexus</id>
>> <name>My Company Release Repository</name>
>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>> <layout>default</layout>
>> </repository>
>> <snapshotRepository>
>> <id>nexus</id>
>> <name>My Company Snapshot Repository</name>
>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>> <layout>default</layout>
>> </snapshotRepository>
>> </distributionManagement>
>> <build>
>> </build>
>> <repositories>
>> <repository>
>> <releases>
>> <updatePolicy>always</updatePolicy>
>> </releases>
>> <id>info.collide.mvn</id>
>> <name>Collide</name>
>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
>> </repository>
>> <repository>
>> <id>thirdparty</id>
>> <name>3rd party</name>
>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>> </repository>
>> </repositories>
>> <dependencies>
>> </dependencies>
>> <reporting>
>> <plugins>
>> </plugins>
>> </reporting>
>> <dependencyManagement>
>> </dependencyManagement>
>> <properties>
>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>> </properties>
>> </project>
>>
>> - - - - - - -
>>
>> <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/xsd/maven-4.0.0.xsd">
>> <modelVersion>4.0.0</modelVersion>
>> <parent>
>> <groupId>com</groupId>
>> <artifactId>my-company</artifactId>
>> <version>0.0.1-SNAPSHOT</version>
>> </parent>
>> <groupId>com.my-company</groupId>
>> <artifactId>intersystem</artifactId>
>> <version>0.0.2-SNAPSHOT</version>
>> <packaging>pom</packaging>
>> <name>My Company Intersystem</name>
>> <description>Service layer for collaborative, distributed applications and
>> services</description>
>> <licenses>
>> <license>
>> <name>My Company Intersystem</name>
>> <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuidelines/Intersystem/default.aspx</url>
>> <distribution>repo</distribution>
>> </license>
>> </licenses>
>> <developers>
>> <developer>
>> <id>10069959</id>
>> <name>Eric Kolotyluk</name>
>> <email>eric.kolotyluk@gmail.com</email>
>> <organization>My Company</organization>
>> <timezone>Vancouver PDT</timezone>
>> <roles>
>> <role>Software Architect</role>
>> <role>Software Developer</role>
>> <role>Intersystem Architect</role>
>> </roles>
>> </developer>
>> </developers>
>> <organization>
>> <name>My Company</name>
>> </organization>
>> <distributionManagement>
>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
>> <repository>
>> <uniqueVersion>false</uniqueVersion>
>> <id>nexus</id>
>> <name>My Company Release Repository</name>
>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>> <layout>default</layout>
>> </repository>
>> <snapshotRepository>
>> <id>nexus</id>
>> <name>My Company Snapshot Repository</name>
>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>> <layout>default</layout>
>> </snapshotRepository>
>> </distributionManagement>
>> <build>
>> </build>
>> <repositories>
>> <repository>
>> <releases>
>> <updatePolicy>always</updatePolicy>
>> </releases>
>> <id>info.collide.mvn</id>
>> <name>Collide</name>
>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
>> </repository>
>> <repository>
>> <id>thirdparty</id>
>> <name>3rd party</name>
>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>> </repository>
>> </repositories>
>> <dependencies>
>> </dependencies>
>> <reporting>
>> <plugins>
>> </plugins>
>> </reporting>
>> <dependencyManagement>
>> </dependencyManagement>
>> <properties>
>> <net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>> </properties>
>> <modules>
>> <module>platform.Java</module>
>> <module>platform.NET</module>
>> </modules>
>> </project>
>>
>>
>> On 2012-03-14 1:29 PM, Daivish Shah wrote:
>>> Hi Maven Team,
>>>
>>> I am trying to find out what is the best way to define company specific
>>> GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>>>
>>> Can some one provide me guideline on that ? Is that going to be profile or
>>> just simple POM.XML ? And how to inherit that. Please provide me guideline
>>> to implement it. As this is very critical before we implement all projects
>>> with MAVEN.
>>>
>>> Thanks,
>>> Daivish.
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Stephen Connolly <st...@gmail.com>.
On 15 March 2012 12:11, Joao Silva <jo...@vilt-group.com> wrote:
> Hi Anders
>
> Thanks, but I already mentioned that blog post in my email.
> Do you have something to add to that post?
> Because in my opinion, that post does not offer clear cut conclusions
> regarding the inclusion of repositories in pom.xml files:
>>
>>
>> /Should I put the urls to my repositories in my poms or in my settings?/
>>
>> The short answer is: /settings/.
>>
>> The long answer is: /it depends/.
>>
> For the enterprise scenarios, it may be reasonable to put them in pom.xml
> files...

Nope....

For enterprise scenarios, you use

<mirrorOf>*</mirrorOf>

so that *everything* is pulled from your enterprise repository
manager. Otherwise you are putting your enterprise at risk of a
failure of a 3rd party repository... e.g. what happened when JBoss
shut down their old repositories, what happened when those crazy fools
hosting their own maven repos on google-code svn repos deleted their
projects...

You want *everything* in your enterprise repository manager so that
you have complete control over your destiny

-Stephen

>
> Thanks and best regards
> Joao Silva
>
>
>
> On 3/15/2012 11:45 AM, Anders Hammar wrote:
>>
>>
>> http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/
>>
>> /Anders
>>
>> On Thu, Mar 15, 2012 at 11:51, Joao Silva<jo...@vilt-group.com>
>>  wrote:
>>>
>>> Hi Anders
>>>
>>> Can you provide some arguments to this statement?
>>> We currently recommend all our projects tech leads to add to their top
>>> level
>>> project pom.xml the repositories they use (each individual project tree
>>> usually has 3 repositories: releases, snapshots and 3rdparty).
>>> Since the projects are worked internally only, this eases new developers
>>> and
>>> developer rotation in projects.
>>> Our recommendation derives mainly from this blog post from the Sonatype
>>> blog:
>>>
>>> http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/
>>> If there are aspects of this approach that we are not aware of, it would
>>> be
>>> great to see them discussed.
>>>
>>> Thanks for your time!
>>> Best regards
>>> Joao Silva
>>>
>>> On 3/15/2012 9:09 AM, Anders Hammar wrote:
>>>>
>>>> You should NOT declare repositories (or plugin repositories) in a
>>>> corporate pom. That should be handled in settings.xml.
>>>>
>>>> /Anders
>>>>
>>>> On Wed, Mar 14, 2012 at 22:22, Eric Kolotyluk<er...@gmail.com>
>>>>  wrote:
>>>>>
>>>>> What I do is have a top-level POM like (see below), and then I have my
>>>>> top
>>>>> level project POMs reference that (see further below). This may not be
>>>>> the
>>>>> best example, as I am still in the process of building the
>>>>> infrastructure,
>>>>> but
>>>>>
>>>>> 1. I put the Parent POM in its own place in source control and I
>>>>>   manually deploy it with Maven when I make changes.
>>>>> 2. You need to do this before creating any Project POMs that reference
>>>>>   it because they should reference it via Maven and not the file
>>>>>   system - if you work in a large company you will soon discover why.
>>>>> 3. There is of course a bootstrapping issue because now the project
>>>>>   POMs need to know how to find your Repository Manager, which is why
>>>>>   I include that information in the top level (Corporate) POM so
>>>>>   people can use it as a reference.
>>>>> 4. As you may gather I am using Sonatype's Nexus as a Repository
>>>>> Manager.
>>>>> 5. We are still developing our corporate repository infrastructure so
>>>>>   the content of the Corporate POM will evolve over time as our
>>>>>   corporate governance and policies are better codified.
>>>>>
>>>>> Does that help?
>>>>>
>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>> <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/xsd/maven-4.0.0.xsd">
>>>>> <!--
>>>>>       Copyright Š My Company 2012
>>>>>
>>>>>       Proprietary&    Confidential
>>>>>
>>>>>       This is the top level POM for My Company Maven projects. It
>>>>> contains
>>>>> rules and standards common to all projects.
>>>>>
>>>>>       Changes:
>>>>>
>>>>>       2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
>>>>>         Created initial version for check-in into source control.
>>>>>
>>>>>       2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
>>>>>         Reconfigured for Nexus 2.0 on sonatype.
>>>>>   -->
>>>>> <modelVersion>4.0.0</modelVersion>
>>>>> <groupId>com</groupId>
>>>>> <artifactId>my-company</artifactId>
>>>>> <version>0.0.1-SNAPSHOT</version>
>>>>> <packaging>pom</packaging>
>>>>> <name>My Company Corporate POM</name>
>>>>> <description>Corporate Project Object Module for standard conventions
>>>>> and
>>>>> rules.</description>
>>>>> <developers>
>>>>> <developer>
>>>>> <id>10069959</id>
>>>>> <name>Eric Kolotyluk</name>
>>>>> <email>eric.kolotyluk@gmail.com</email>
>>>>> <organization>My Company Ltd.</organization>
>>>>> <timezone>Vancouver PDT</timezone>
>>>>> <roles>
>>>>> <role>Software Architect</role>
>>>>> <role>Software Developer</role>
>>>>> </roles>
>>>>> </developer>
>>>>> </developers>
>>>>> <organization>
>>>>> <name>My Company</name>
>>>>> </organization>
>>>>> <distributionManagement>
>>>>>
>>>>>
>>>>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
>>>>> <repository>
>>>>> <uniqueVersion>false</uniqueVersion>
>>>>> <id>nexus</id>
>>>>> <name>My Company Release Repository</name>
>>>>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>>>>> <layout>default</layout>
>>>>> </repository>
>>>>> <snapshotRepository>
>>>>> <id>nexus</id>
>>>>> <name>My Company Snapshot Repository</name>
>>>>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>>>>> <layout>default</layout>
>>>>> </snapshotRepository>
>>>>> </distributionManagement>
>>>>> <build>
>>>>> </build>
>>>>> <repositories>
>>>>> <repository>
>>>>> <releases>
>>>>> <updatePolicy>always</updatePolicy>
>>>>> </releases>
>>>>> <id>info.collide.mvn</id>
>>>>> <name>Collide</name>
>>>>>
>>>>>
>>>>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
>>>>> </repository>
>>>>> <repository>
>>>>> <id>thirdparty</id>
>>>>> <name>3rd party</name>
>>>>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>>>>> </repository>
>>>>> </repositories>
>>>>> <dependencies>
>>>>> </dependencies>
>>>>> <reporting>
>>>>> <plugins>
>>>>> </plugins>
>>>>> </reporting>
>>>>> <dependencyManagement>
>>>>> </dependencyManagement>
>>>>> <properties>
>>>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>>>> </properties>
>>>>> </project>
>>>>>
>>>>> - - - - - - -
>>>>>
>>>>> <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/xsd/maven-4.0.0.xsd">
>>>>> <modelVersion>4.0.0</modelVersion>
>>>>> <parent>
>>>>> <groupId>com</groupId>
>>>>> <artifactId>my-company</artifactId>
>>>>> <version>0.0.1-SNAPSHOT</version>
>>>>> </parent>
>>>>> <groupId>com.my-company</groupId>
>>>>> <artifactId>intersystem</artifactId>
>>>>> <version>0.0.2-SNAPSHOT</version>
>>>>> <packaging>pom</packaging>
>>>>> <name>My Company Intersystem</name>
>>>>> <description>Service layer for collaborative, distributed applications
>>>>> and
>>>>> services</description>
>>>>> <licenses>
>>>>> <license>
>>>>> <name>My Company Intersystem</name>
>>>>>
>>>>>
>>>>> <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuidelines/Intersystem/default.aspx</url>
>>>>> <distribution>repo</distribution>
>>>>> </license>
>>>>> </licenses>
>>>>> <developers>
>>>>> <developer>
>>>>> <id>10069959</id>
>>>>> <name>Eric Kolotyluk</name>
>>>>> <email>eric.kolotyluk@gmail.com</email>
>>>>> <organization>My Company</organization>
>>>>> <timezone>Vancouver PDT</timezone>
>>>>> <roles>
>>>>> <role>Software Architect</role>
>>>>> <role>Software Developer</role>
>>>>> <role>Intersystem Architect</role>
>>>>> </roles>
>>>>> </developer>
>>>>> </developers>
>>>>> <organization>
>>>>> <name>My Company</name>
>>>>> </organization>
>>>>> <distributionManagement>
>>>>>
>>>>>
>>>>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
>>>>> <repository>
>>>>> <uniqueVersion>false</uniqueVersion>
>>>>> <id>nexus</id>
>>>>> <name>My Company Release Repository</name>
>>>>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>>>>> <layout>default</layout>
>>>>> </repository>
>>>>> <snapshotRepository>
>>>>> <id>nexus</id>
>>>>> <name>My Company Snapshot Repository</name>
>>>>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>>>>> <layout>default</layout>
>>>>> </snapshotRepository>
>>>>> </distributionManagement>
>>>>> <build>
>>>>> </build>
>>>>> <repositories>
>>>>> <repository>
>>>>> <releases>
>>>>> <updatePolicy>always</updatePolicy>
>>>>> </releases>
>>>>> <id>info.collide.mvn</id>
>>>>> <name>Collide</name>
>>>>>
>>>>>
>>>>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
>>>>> </repository>
>>>>> <repository>
>>>>> <id>thirdparty</id>
>>>>> <name>3rd party</name>
>>>>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>>>>> </repository>
>>>>> </repositories>
>>>>> <dependencies>
>>>>> </dependencies>
>>>>> <reporting>
>>>>> <plugins>
>>>>> </plugins>
>>>>> </reporting>
>>>>> <dependencyManagement>
>>>>> </dependencyManagement>
>>>>> <properties>
>>>>> <net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
>>>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>>>> </properties>
>>>>> <modules>
>>>>> <module>platform.Java</module>
>>>>> <module>platform.NET</module>
>>>>> </modules>
>>>>> </project>
>>>>>
>>>>>
>>>>> On 2012-03-14 1:29 PM, Daivish Shah wrote:
>>>>>>
>>>>>> Hi Maven Team,
>>>>>>
>>>>>> I am trying to find out what is the best way to define company
>>>>>> specific
>>>>>> GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>>>>>>
>>>>>> Can some one provide me guideline on that ? Is that going to be
>>>>>> profile
>>>>>> or
>>>>>> just simple POM.XML ? And how to inherit that. Please provide me
>>>>>> guideline
>>>>>> to implement it. As this is very critical before we implement all
>>>>>> projects
>>>>>> with MAVEN.
>>>>>>
>>>>>> Thanks,
>>>>>> Daivish.
>>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>>>>> For additional commands, e-mail: users-help@maven.apache.org
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>>>> For additional commands, e-mail: users-help@maven.apache.org
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>>> For additional commands, e-mail: users-help@maven.apache.org
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
>
> --
> *João Silva
> * *
> VILT Group
> * *_http://www.vilt-group.com
> _
> Rua Ivone Silva, 6 - 7º Esq
> 1050-124 Lisboa - Portugal
>
> Mobile  +351 926 531 097
> Phone   +351 210 34 33 00
> Fax       +351 210 34 33 99
> Email _joao.silva@vilt-group.com <ma...@vilt-group.com>_*

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Joao Silva <jo...@vilt-group.com>.
Hi Anders

Thanks, but I already mentioned that blog post in my email.
Do you have something to add to that post?
Because in my opinion, that post does not offer clear cut conclusions 
regarding the inclusion of repositories in pom.xml files:
>
> /Should I put the urls to my repositories in my poms or in my settings?/
>
> The short answer is: /settings/.
>
> The long answer is: /it depends/.
>
For the enterprise scenarios, it may be reasonable to put them in 
pom.xml files...

Thanks and best regards
Joao Silva


On 3/15/2012 11:45 AM, Anders Hammar wrote:
> http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/
>
> /Anders
>
> On Thu, Mar 15, 2012 at 11:51, Joao Silva<jo...@vilt-group.com>  wrote:
>> Hi Anders
>>
>> Can you provide some arguments to this statement?
>> We currently recommend all our projects tech leads to add to their top level
>> project pom.xml the repositories they use (each individual project tree
>> usually has 3 repositories: releases, snapshots and 3rdparty).
>> Since the projects are worked internally only, this eases new developers and
>> developer rotation in projects.
>> Our recommendation derives mainly from this blog post from the Sonatype
>> blog:
>> http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/
>> If there are aspects of this approach that we are not aware of, it would be
>> great to see them discussed.
>>
>> Thanks for your time!
>> Best regards
>> Joao Silva
>>
>> On 3/15/2012 9:09 AM, Anders Hammar wrote:
>>> You should NOT declare repositories (or plugin repositories) in a
>>> corporate pom. That should be handled in settings.xml.
>>>
>>> /Anders
>>>
>>> On Wed, Mar 14, 2012 at 22:22, Eric Kolotyluk<er...@gmail.com>
>>>   wrote:
>>>> What I do is have a top-level POM like (see below), and then I have my
>>>> top
>>>> level project POMs reference that (see further below). This may not be
>>>> the
>>>> best example, as I am still in the process of building the
>>>> infrastructure,
>>>> but
>>>>
>>>> 1. I put the Parent POM in its own place in source control and I
>>>>    manually deploy it with Maven when I make changes.
>>>> 2. You need to do this before creating any Project POMs that reference
>>>>    it because they should reference it via Maven and not the file
>>>>    system - if you work in a large company you will soon discover why.
>>>> 3. There is of course a bootstrapping issue because now the project
>>>>    POMs need to know how to find your Repository Manager, which is why
>>>>    I include that information in the top level (Corporate) POM so
>>>>    people can use it as a reference.
>>>> 4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
>>>> 5. We are still developing our corporate repository infrastructure so
>>>>    the content of the Corporate POM will evolve over time as our
>>>>    corporate governance and policies are better codified.
>>>>
>>>> Does that help?
>>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <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/xsd/maven-4.0.0.xsd">
>>>> <!--
>>>>        Copyright Š My Company 2012
>>>>
>>>>        Proprietary&    Confidential
>>>>
>>>>        This is the top level POM for My Company Maven projects. It
>>>> contains
>>>> rules and standards common to all projects.
>>>>
>>>>        Changes:
>>>>
>>>>        2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
>>>>          Created initial version for check-in into source control.
>>>>
>>>>        2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
>>>>          Reconfigured for Nexus 2.0 on sonatype.
>>>>    -->
>>>> <modelVersion>4.0.0</modelVersion>
>>>> <groupId>com</groupId>
>>>> <artifactId>my-company</artifactId>
>>>> <version>0.0.1-SNAPSHOT</version>
>>>> <packaging>pom</packaging>
>>>> <name>My Company Corporate POM</name>
>>>> <description>Corporate Project Object Module for standard conventions and
>>>> rules.</description>
>>>> <developers>
>>>> <developer>
>>>> <id>10069959</id>
>>>> <name>Eric Kolotyluk</name>
>>>> <email>eric.kolotyluk@gmail.com</email>
>>>> <organization>My Company Ltd.</organization>
>>>> <timezone>Vancouver PDT</timezone>
>>>> <roles>
>>>> <role>Software Architect</role>
>>>> <role>Software Developer</role>
>>>> </roles>
>>>> </developer>
>>>> </developers>
>>>> <organization>
>>>> <name>My Company</name>
>>>> </organization>
>>>> <distributionManagement>
>>>>
>>>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
>>>> <repository>
>>>> <uniqueVersion>false</uniqueVersion>
>>>> <id>nexus</id>
>>>> <name>My Company Release Repository</name>
>>>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>>>> <layout>default</layout>
>>>> </repository>
>>>> <snapshotRepository>
>>>> <id>nexus</id>
>>>> <name>My Company Snapshot Repository</name>
>>>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>>>> <layout>default</layout>
>>>> </snapshotRepository>
>>>> </distributionManagement>
>>>> <build>
>>>> </build>
>>>> <repositories>
>>>> <repository>
>>>> <releases>
>>>> <updatePolicy>always</updatePolicy>
>>>> </releases>
>>>> <id>info.collide.mvn</id>
>>>> <name>Collide</name>
>>>>
>>>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
>>>> </repository>
>>>> <repository>
>>>> <id>thirdparty</id>
>>>> <name>3rd party</name>
>>>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>>>> </repository>
>>>> </repositories>
>>>> <dependencies>
>>>> </dependencies>
>>>> <reporting>
>>>> <plugins>
>>>> </plugins>
>>>> </reporting>
>>>> <dependencyManagement>
>>>> </dependencyManagement>
>>>> <properties>
>>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>>> </properties>
>>>> </project>
>>>>
>>>> - - - - - - -
>>>>
>>>> <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/xsd/maven-4.0.0.xsd">
>>>> <modelVersion>4.0.0</modelVersion>
>>>> <parent>
>>>> <groupId>com</groupId>
>>>> <artifactId>my-company</artifactId>
>>>> <version>0.0.1-SNAPSHOT</version>
>>>> </parent>
>>>> <groupId>com.my-company</groupId>
>>>> <artifactId>intersystem</artifactId>
>>>> <version>0.0.2-SNAPSHOT</version>
>>>> <packaging>pom</packaging>
>>>> <name>My Company Intersystem</name>
>>>> <description>Service layer for collaborative, distributed applications
>>>> and
>>>> services</description>
>>>> <licenses>
>>>> <license>
>>>> <name>My Company Intersystem</name>
>>>>
>>>> <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuidelines/Intersystem/default.aspx</url>
>>>> <distribution>repo</distribution>
>>>> </license>
>>>> </licenses>
>>>> <developers>
>>>> <developer>
>>>> <id>10069959</id>
>>>> <name>Eric Kolotyluk</name>
>>>> <email>eric.kolotyluk@gmail.com</email>
>>>> <organization>My Company</organization>
>>>> <timezone>Vancouver PDT</timezone>
>>>> <roles>
>>>> <role>Software Architect</role>
>>>> <role>Software Developer</role>
>>>> <role>Intersystem Architect</role>
>>>> </roles>
>>>> </developer>
>>>> </developers>
>>>> <organization>
>>>> <name>My Company</name>
>>>> </organization>
>>>> <distributionManagement>
>>>>
>>>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
>>>> <repository>
>>>> <uniqueVersion>false</uniqueVersion>
>>>> <id>nexus</id>
>>>> <name>My Company Release Repository</name>
>>>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>>>> <layout>default</layout>
>>>> </repository>
>>>> <snapshotRepository>
>>>> <id>nexus</id>
>>>> <name>My Company Snapshot Repository</name>
>>>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>>>> <layout>default</layout>
>>>> </snapshotRepository>
>>>> </distributionManagement>
>>>> <build>
>>>> </build>
>>>> <repositories>
>>>> <repository>
>>>> <releases>
>>>> <updatePolicy>always</updatePolicy>
>>>> </releases>
>>>> <id>info.collide.mvn</id>
>>>> <name>Collide</name>
>>>>
>>>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
>>>> </repository>
>>>> <repository>
>>>> <id>thirdparty</id>
>>>> <name>3rd party</name>
>>>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>>>> </repository>
>>>> </repositories>
>>>> <dependencies>
>>>> </dependencies>
>>>> <reporting>
>>>> <plugins>
>>>> </plugins>
>>>> </reporting>
>>>> <dependencyManagement>
>>>> </dependencyManagement>
>>>> <properties>
>>>> <net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
>>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>>> </properties>
>>>> <modules>
>>>> <module>platform.Java</module>
>>>> <module>platform.NET</module>
>>>> </modules>
>>>> </project>
>>>>
>>>>
>>>> On 2012-03-14 1:29 PM, Daivish Shah wrote:
>>>>> Hi Maven Team,
>>>>>
>>>>> I am trying to find out what is the best way to define company specific
>>>>> GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>>>>>
>>>>> Can some one provide me guideline on that ? Is that going to be profile
>>>>> or
>>>>> just simple POM.XML ? And how to inherit that. Please provide me
>>>>> guideline
>>>>> to implement it. As this is very critical before we implement all
>>>>> projects
>>>>> with MAVEN.
>>>>>
>>>>> Thanks,
>>>>> Daivish.
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>>>> For additional commands, e-mail: users-help@maven.apache.org
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>>> For additional commands, e-mail: users-help@maven.apache.org
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>

-- 
*João Silva
* *
VILT Group
* *_http://www.vilt-group.com
_
Rua Ivone Silva, 6 - 7º Esq
1050-124 Lisboa - Portugal

Mobile  +351 926 531 097
Phone   +351 210 34 33 00
Fax       +351 210 34 33 99
Email _joao.silva@vilt-group.com <ma...@vilt-group.com>_*

Re: Which is the BEST Approach to define Global POM.XML

Posted by Anders Hammar <an...@hammar.net>.
http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/

/Anders

On Thu, Mar 15, 2012 at 11:51, Joao Silva <jo...@vilt-group.com> wrote:
> Hi Anders
>
> Can you provide some arguments to this statement?
> We currently recommend all our projects tech leads to add to their top level
> project pom.xml the repositories they use (each individual project tree
> usually has 3 repositories: releases, snapshots and 3rdparty).
> Since the projects are worked internally only, this eases new developers and
> developer rotation in projects.
> Our recommendation derives mainly from this blog post from the Sonatype
> blog:
> http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/
> If there are aspects of this approach that we are not aware of, it would be
> great to see them discussed.
>
> Thanks for your time!
> Best regards
> Joao Silva
>
> On 3/15/2012 9:09 AM, Anders Hammar wrote:
>>
>> You should NOT declare repositories (or plugin repositories) in a
>> corporate pom. That should be handled in settings.xml.
>>
>> /Anders
>>
>> On Wed, Mar 14, 2012 at 22:22, Eric Kolotyluk<er...@gmail.com>
>>  wrote:
>>>
>>> What I do is have a top-level POM like (see below), and then I have my
>>> top
>>> level project POMs reference that (see further below). This may not be
>>> the
>>> best example, as I am still in the process of building the
>>> infrastructure,
>>> but
>>>
>>> 1. I put the Parent POM in its own place in source control and I
>>>   manually deploy it with Maven when I make changes.
>>> 2. You need to do this before creating any Project POMs that reference
>>>   it because they should reference it via Maven and not the file
>>>   system - if you work in a large company you will soon discover why.
>>> 3. There is of course a bootstrapping issue because now the project
>>>   POMs need to know how to find your Repository Manager, which is why
>>>   I include that information in the top level (Corporate) POM so
>>>   people can use it as a reference.
>>> 4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
>>> 5. We are still developing our corporate repository infrastructure so
>>>   the content of the Corporate POM will evolve over time as our
>>>   corporate governance and policies are better codified.
>>>
>>> Does that help?
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <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/xsd/maven-4.0.0.xsd">
>>> <!--
>>>       Copyright Š My Company 2012
>>>
>>>       Proprietary&  Confidential
>>>
>>>       This is the top level POM for My Company Maven projects. It
>>> contains
>>> rules and standards common to all projects.
>>>
>>>       Changes:
>>>
>>>       2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
>>>         Created initial version for check-in into source control.
>>>
>>>       2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
>>>         Reconfigured for Nexus 2.0 on sonatype.
>>>   -->
>>> <modelVersion>4.0.0</modelVersion>
>>> <groupId>com</groupId>
>>> <artifactId>my-company</artifactId>
>>> <version>0.0.1-SNAPSHOT</version>
>>> <packaging>pom</packaging>
>>> <name>My Company Corporate POM</name>
>>> <description>Corporate Project Object Module for standard conventions and
>>> rules.</description>
>>> <developers>
>>> <developer>
>>> <id>10069959</id>
>>> <name>Eric Kolotyluk</name>
>>> <email>eric.kolotyluk@gmail.com</email>
>>> <organization>My Company Ltd.</organization>
>>> <timezone>Vancouver PDT</timezone>
>>> <roles>
>>> <role>Software Architect</role>
>>> <role>Software Developer</role>
>>> </roles>
>>> </developer>
>>> </developers>
>>> <organization>
>>> <name>My Company</name>
>>> </organization>
>>> <distributionManagement>
>>>
>>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
>>> <repository>
>>> <uniqueVersion>false</uniqueVersion>
>>> <id>nexus</id>
>>> <name>My Company Release Repository</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>>> <layout>default</layout>
>>> </repository>
>>> <snapshotRepository>
>>> <id>nexus</id>
>>> <name>My Company Snapshot Repository</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>>> <layout>default</layout>
>>> </snapshotRepository>
>>> </distributionManagement>
>>> <build>
>>> </build>
>>> <repositories>
>>> <repository>
>>> <releases>
>>> <updatePolicy>always</updatePolicy>
>>> </releases>
>>> <id>info.collide.mvn</id>
>>> <name>Collide</name>
>>>
>>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
>>> </repository>
>>> <repository>
>>> <id>thirdparty</id>
>>> <name>3rd party</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>>> </repository>
>>> </repositories>
>>> <dependencies>
>>> </dependencies>
>>> <reporting>
>>> <plugins>
>>> </plugins>
>>> </reporting>
>>> <dependencyManagement>
>>> </dependencyManagement>
>>> <properties>
>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>> </properties>
>>> </project>
>>>
>>> - - - - - - -
>>>
>>> <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/xsd/maven-4.0.0.xsd">
>>> <modelVersion>4.0.0</modelVersion>
>>> <parent>
>>> <groupId>com</groupId>
>>> <artifactId>my-company</artifactId>
>>> <version>0.0.1-SNAPSHOT</version>
>>> </parent>
>>> <groupId>com.my-company</groupId>
>>> <artifactId>intersystem</artifactId>
>>> <version>0.0.2-SNAPSHOT</version>
>>> <packaging>pom</packaging>
>>> <name>My Company Intersystem</name>
>>> <description>Service layer for collaborative, distributed applications
>>> and
>>> services</description>
>>> <licenses>
>>> <license>
>>> <name>My Company Intersystem</name>
>>>
>>> <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuidelines/Intersystem/default.aspx</url>
>>> <distribution>repo</distribution>
>>> </license>
>>> </licenses>
>>> <developers>
>>> <developer>
>>> <id>10069959</id>
>>> <name>Eric Kolotyluk</name>
>>> <email>eric.kolotyluk@gmail.com</email>
>>> <organization>My Company</organization>
>>> <timezone>Vancouver PDT</timezone>
>>> <roles>
>>> <role>Software Architect</role>
>>> <role>Software Developer</role>
>>> <role>Intersystem Architect</role>
>>> </roles>
>>> </developer>
>>> </developers>
>>> <organization>
>>> <name>My Company</name>
>>> </organization>
>>> <distributionManagement>
>>>
>>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
>>> <repository>
>>> <uniqueVersion>false</uniqueVersion>
>>> <id>nexus</id>
>>> <name>My Company Release Repository</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>>> <layout>default</layout>
>>> </repository>
>>> <snapshotRepository>
>>> <id>nexus</id>
>>> <name>My Company Snapshot Repository</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>>> <layout>default</layout>
>>> </snapshotRepository>
>>> </distributionManagement>
>>> <build>
>>> </build>
>>> <repositories>
>>> <repository>
>>> <releases>
>>> <updatePolicy>always</updatePolicy>
>>> </releases>
>>> <id>info.collide.mvn</id>
>>> <name>Collide</name>
>>>
>>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
>>> </repository>
>>> <repository>
>>> <id>thirdparty</id>
>>> <name>3rd party</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>>> </repository>
>>> </repositories>
>>> <dependencies>
>>> </dependencies>
>>> <reporting>
>>> <plugins>
>>> </plugins>
>>> </reporting>
>>> <dependencyManagement>
>>> </dependencyManagement>
>>> <properties>
>>> <net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>> </properties>
>>> <modules>
>>> <module>platform.Java</module>
>>> <module>platform.NET</module>
>>> </modules>
>>> </project>
>>>
>>>
>>> On 2012-03-14 1:29 PM, Daivish Shah wrote:
>>>>
>>>> Hi Maven Team,
>>>>
>>>> I am trying to find out what is the best way to define company specific
>>>> GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>>>>
>>>> Can some one provide me guideline on that ? Is that going to be profile
>>>> or
>>>> just simple POM.XML ? And how to inherit that. Please provide me
>>>> guideline
>>>> to implement it. As this is very critical before we implement all
>>>> projects
>>>> with MAVEN.
>>>>
>>>> Thanks,
>>>> Daivish.
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>>> For additional commands, e-mail: users-help@maven.apache.org
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Joao Silva <jo...@vilt-group.com>.
Hi Anders

Can you provide some arguments to this statement?
We currently recommend all our projects tech leads to add to their top 
level project pom.xml the repositories they use (each individual project 
tree usually has 3 repositories: releases, snapshots and 3rdparty).
Since the projects are worked internally only, this eases new developers 
and developer rotation in projects.
Our recommendation derives mainly from this blog post from the Sonatype 
blog: 
http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/
If there are aspects of this approach that we are not aware of, it would 
be great to see them discussed.

Thanks for your time!
Best regards
Joao Silva

On 3/15/2012 9:09 AM, Anders Hammar wrote:
> You should NOT declare repositories (or plugin repositories) in a
> corporate pom. That should be handled in settings.xml.
>
> /Anders
>
> On Wed, Mar 14, 2012 at 22:22, Eric Kolotyluk<er...@gmail.com>  wrote:
>> What I do is have a top-level POM like (see below), and then I have my top
>> level project POMs reference that (see further below). This may not be the
>> best example, as I am still in the process of building the infrastructure,
>> but
>>
>> 1. I put the Parent POM in its own place in source control and I
>>    manually deploy it with Maven when I make changes.
>> 2. You need to do this before creating any Project POMs that reference
>>    it because they should reference it via Maven and not the file
>>    system - if you work in a large company you will soon discover why.
>> 3. There is of course a bootstrapping issue because now the project
>>    POMs need to know how to find your Repository Manager, which is why
>>    I include that information in the top level (Corporate) POM so
>>    people can use it as a reference.
>> 4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
>> 5. We are still developing our corporate repository infrastructure so
>>    the content of the Corporate POM will evolve over time as our
>>    corporate governance and policies are better codified.
>>
>> Does that help?
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <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/xsd/maven-4.0.0.xsd">
>> <!--
>>        Copyright © My Company 2012
>>
>>        Proprietary&  Confidential
>>
>>        This is the top level POM for My Company Maven projects. It contains
>> rules and standards common to all projects.
>>
>>        Changes:
>>
>>        2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
>>          Created initial version for check-in into source control.
>>
>>        2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
>>          Reconfigured for Nexus 2.0 on sonatype.
>>    -->
>> <modelVersion>4.0.0</modelVersion>
>> <groupId>com</groupId>
>> <artifactId>my-company</artifactId>
>> <version>0.0.1-SNAPSHOT</version>
>> <packaging>pom</packaging>
>> <name>My Company Corporate POM</name>
>> <description>Corporate Project Object Module for standard conventions and
>> rules.</description>
>> <developers>
>> <developer>
>> <id>10069959</id>
>> <name>Eric Kolotyluk</name>
>> <email>eric.kolotyluk@gmail.com</email>
>> <organization>My Company Ltd.</organization>
>> <timezone>Vancouver PDT</timezone>
>> <roles>
>> <role>Software Architect</role>
>> <role>Software Developer</role>
>> </roles>
>> </developer>
>> </developers>
>> <organization>
>> <name>My Company</name>
>> </organization>
>> <distributionManagement>
>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
>> <repository>
>> <uniqueVersion>false</uniqueVersion>
>> <id>nexus</id>
>> <name>My Company Release Repository</name>
>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>> <layout>default</layout>
>> </repository>
>> <snapshotRepository>
>> <id>nexus</id>
>> <name>My Company Snapshot Repository</name>
>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>> <layout>default</layout>
>> </snapshotRepository>
>> </distributionManagement>
>> <build>
>> </build>
>> <repositories>
>> <repository>
>> <releases>
>> <updatePolicy>always</updatePolicy>
>> </releases>
>> <id>info.collide.mvn</id>
>> <name>Collide</name>
>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
>> </repository>
>> <repository>
>> <id>thirdparty</id>
>> <name>3rd party</name>
>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>> </repository>
>> </repositories>
>> <dependencies>
>> </dependencies>
>> <reporting>
>> <plugins>
>> </plugins>
>> </reporting>
>> <dependencyManagement>
>> </dependencyManagement>
>> <properties>
>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>> </properties>
>> </project>
>>
>> - - - - - - -
>>
>> <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/xsd/maven-4.0.0.xsd">
>> <modelVersion>4.0.0</modelVersion>
>> <parent>
>> <groupId>com</groupId>
>> <artifactId>my-company</artifactId>
>> <version>0.0.1-SNAPSHOT</version>
>> </parent>
>> <groupId>com.my-company</groupId>
>> <artifactId>intersystem</artifactId>
>> <version>0.0.2-SNAPSHOT</version>
>> <packaging>pom</packaging>
>> <name>My Company Intersystem</name>
>> <description>Service layer for collaborative, distributed applications and
>> services</description>
>> <licenses>
>> <license>
>> <name>My Company Intersystem</name>
>> <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuidelines/Intersystem/default.aspx</url>
>> <distribution>repo</distribution>
>> </license>
>> </licenses>
>> <developers>
>> <developer>
>> <id>10069959</id>
>> <name>Eric Kolotyluk</name>
>> <email>eric.kolotyluk@gmail.com</email>
>> <organization>My Company</organization>
>> <timezone>Vancouver PDT</timezone>
>> <roles>
>> <role>Software Architect</role>
>> <role>Software Developer</role>
>> <role>Intersystem Architect</role>
>> </roles>
>> </developer>
>> </developers>
>> <organization>
>> <name>My Company</name>
>> </organization>
>> <distributionManagement>
>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
>> <repository>
>> <uniqueVersion>false</uniqueVersion>
>> <id>nexus</id>
>> <name>My Company Release Repository</name>
>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>> <layout>default</layout>
>> </repository>
>> <snapshotRepository>
>> <id>nexus</id>
>> <name>My Company Snapshot Repository</name>
>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>> <layout>default</layout>
>> </snapshotRepository>
>> </distributionManagement>
>> <build>
>> </build>
>> <repositories>
>> <repository>
>> <releases>
>> <updatePolicy>always</updatePolicy>
>> </releases>
>> <id>info.collide.mvn</id>
>> <name>Collide</name>
>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
>> </repository>
>> <repository>
>> <id>thirdparty</id>
>> <name>3rd party</name>
>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>> </repository>
>> </repositories>
>> <dependencies>
>> </dependencies>
>> <reporting>
>> <plugins>
>> </plugins>
>> </reporting>
>> <dependencyManagement>
>> </dependencyManagement>
>> <properties>
>> <net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>> </properties>
>> <modules>
>> <module>platform.Java</module>
>> <module>platform.NET</module>
>> </modules>
>> </project>
>>
>>
>> On 2012-03-14 1:29 PM, Daivish Shah wrote:
>>> Hi Maven Team,
>>>
>>> I am trying to find out what is the best way to define company specific
>>> GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>>>
>>> Can some one provide me guideline on that ? Is that going to be profile or
>>> just simple POM.XML ? And how to inherit that. Please provide me guideline
>>> to implement it. As this is very critical before we implement all projects
>>> with MAVEN.
>>>
>>> Thanks,
>>> Daivish.
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Anders Hammar <an...@hammar.net>.
You should NOT declare repositories (or plugin repositories) in a
corporate pom. That should be handled in settings.xml.

/Anders

On Wed, Mar 14, 2012 at 22:22, Eric Kolotyluk <er...@gmail.com> wrote:
> What I do is have a top-level POM like (see below), and then I have my top
> level project POMs reference that (see further below). This may not be the
> best example, as I am still in the process of building the infrastructure,
> but
>
> 1. I put the Parent POM in its own place in source control and I
>   manually deploy it with Maven when I make changes.
> 2. You need to do this before creating any Project POMs that reference
>   it because they should reference it via Maven and not the file
>   system - if you work in a large company you will soon discover why.
> 3. There is of course a bootstrapping issue because now the project
>   POMs need to know how to find your Repository Manager, which is why
>   I include that information in the top level (Corporate) POM so
>   people can use it as a reference.
> 4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
> 5. We are still developing our corporate repository infrastructure so
>   the content of the Corporate POM will evolve over time as our
>   corporate governance and policies are better codified.
>
> Does that help?
>
> <?xml version="1.0" encoding="UTF-8"?>
> <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/xsd/maven-4.0.0.xsd">
> <!--
>       Copyright © My Company 2012
>
>       Proprietary & Confidential
>
>       This is the top level POM for My Company Maven projects. It contains
> rules and standards common to all projects.
>
>       Changes:
>
>       2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
>         Created initial version for check-in into source control.
>
>       2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
>         Reconfigured for Nexus 2.0 on sonatype.
>   -->
> <modelVersion>4.0.0</modelVersion>
> <groupId>com</groupId>
> <artifactId>my-company</artifactId>
> <version>0.0.1-SNAPSHOT</version>
> <packaging>pom</packaging>
> <name>My Company Corporate POM</name>
> <description>Corporate Project Object Module for standard conventions and
> rules.</description>
> <developers>
> <developer>
> <id>10069959</id>
> <name>Eric Kolotyluk</name>
> <email>eric.kolotyluk@gmail.com</email>
> <organization>My Company Ltd.</organization>
> <timezone>Vancouver PDT</timezone>
> <roles>
> <role>Software Architect</role>
> <role>Software Developer</role>
> </roles>
> </developer>
> </developers>
> <organization>
> <name>My Company</name>
> </organization>
> <distributionManagement>
> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
> <repository>
> <uniqueVersion>false</uniqueVersion>
> <id>nexus</id>
> <name>My Company Release Repository</name>
> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
> <layout>default</layout>
> </repository>
> <snapshotRepository>
> <id>nexus</id>
> <name>My Company Snapshot Repository</name>
> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
> <layout>default</layout>
> </snapshotRepository>
> </distributionManagement>
> <build>
> </build>
> <repositories>
> <repository>
> <releases>
> <updatePolicy>always</updatePolicy>
> </releases>
> <id>info.collide.mvn</id>
> <name>Collide</name>
> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
> </repository>
> <repository>
> <id>thirdparty</id>
> <name>3rd party</name>
> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
> </repository>
> </repositories>
> <dependencies>
> </dependencies>
> <reporting>
> <plugins>
> </plugins>
> </reporting>
> <dependencyManagement>
> </dependencyManagement>
> <properties>
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> </properties>
> </project>
>
> - - - - - - -
>
> <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/xsd/maven-4.0.0.xsd">
> <modelVersion>4.0.0</modelVersion>
> <parent>
> <groupId>com</groupId>
> <artifactId>my-company</artifactId>
> <version>0.0.1-SNAPSHOT</version>
> </parent>
> <groupId>com.my-company</groupId>
> <artifactId>intersystem</artifactId>
> <version>0.0.2-SNAPSHOT</version>
> <packaging>pom</packaging>
> <name>My Company Intersystem</name>
> <description>Service layer for collaborative, distributed applications and
> services</description>
> <licenses>
> <license>
> <name>My Company Intersystem</name>
> <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuidelines/Intersystem/default.aspx</url>
> <distribution>repo</distribution>
> </license>
> </licenses>
> <developers>
> <developer>
> <id>10069959</id>
> <name>Eric Kolotyluk</name>
> <email>eric.kolotyluk@gmail.com</email>
> <organization>My Company</organization>
> <timezone>Vancouver PDT</timezone>
> <roles>
> <role>Software Architect</role>
> <role>Software Developer</role>
> <role>Intersystem Architect</role>
> </roles>
> </developer>
> </developers>
> <organization>
> <name>My Company</name>
> </organization>
> <distributionManagement>
> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
> <repository>
> <uniqueVersion>false</uniqueVersion>
> <id>nexus</id>
> <name>My Company Release Repository</name>
> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
> <layout>default</layout>
> </repository>
> <snapshotRepository>
> <id>nexus</id>
> <name>My Company Snapshot Repository</name>
> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
> <layout>default</layout>
> </snapshotRepository>
> </distributionManagement>
> <build>
> </build>
> <repositories>
> <repository>
> <releases>
> <updatePolicy>always</updatePolicy>
> </releases>
> <id>info.collide.mvn</id>
> <name>Collide</name>
> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
> </repository>
> <repository>
> <id>thirdparty</id>
> <name>3rd party</name>
> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
> </repository>
> </repositories>
> <dependencies>
> </dependencies>
> <reporting>
> <plugins>
> </plugins>
> </reporting>
> <dependencyManagement>
> </dependencyManagement>
> <properties>
> <net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> </properties>
> <modules>
> <module>platform.Java</module>
> <module>platform.NET</module>
> </modules>
> </project>
>
>
> On 2012-03-14 1:29 PM, Daivish Shah wrote:
>>
>> Hi Maven Team,
>>
>> I am trying to find out what is the best way to define company specific
>> GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>>
>> Can some one provide me guideline on that ? Is that going to be profile or
>> just simple POM.XML ? And how to inherit that. Please provide me guideline
>> to implement it. As this is very critical before we implement all projects
>> with MAVEN.
>>
>> Thanks,
>> Daivish.
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Eric Kolotyluk <er...@gmail.com>.

On 2012-03-15 3:35 AM, Jörg Schaible wrote:
> Eric Kolotyluk wrote:
>
>> What I do is have a top-level POM like (see below), and then I have my
>> top level project POMs reference that (see further below). This may not
>> be the best example, as I am still in the process of building the
>> infrastructure, but
>>
>>   1. I put the Parent POM in its own place in source control and I
>>      manually deploy it with Maven when I make changes.
>>   2. You need to do this before creating any Project POMs that reference
>>      it because they should reference it via Maven and not the file
>>      system - if you work in a large company you will soon discover why.
>>   3. There is of course a bootstrapping issue because now the project
>>      POMs need to know how to find your Repository Manager, which is why
>>      I include that information in the top level (Corporate) POM so
>>      people can use it as a reference.
>>   4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
>>   5. We are still developing our corporate repository infrastructure so
>>      the content of the Corporate POM will evolve over time as our
>>      corporate governance and policies are better codified.
>>
>> Does that help?
> [snip]
>
>> <modules>
>> <module>platform.Java</module>
>> <module>platform.NET</module>
>> </modules>
> [snip]
>
> It's a bad idea to declare modules in a global (resp. corporate POM). Such a
> POM should be a project on its own with no submodules. Or do you think the
> Apache parent POM references all projects at Apache that use Maven directly
> (or indirectly)?

FYI - those modules were not declared in the top level Corporate POM, 
they were declare in the Project  POM. The example Corporate POM had no 
modules. In the original response I gave the Corporate and Project POMs 
were separated by a - - - - - - - - - - line. While Jörg makes a good 
point, the point did not pertain to my examples.

>
> A project POM may now refer the global parent either using a specific
> version (to pin down a specific set of versions and dependencies) or a
> SNAPSHOT to use the latest entries/updates of the global POM.
>
> - Jörg
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Jörg Schaible <Jo...@scalaris.com>.
Eric Kolotyluk wrote:

> What I do is have a top-level POM like (see below), and then I have my
> top level project POMs reference that (see further below). This may not
> be the best example, as I am still in the process of building the
> infrastructure, but
> 
>  1. I put the Parent POM in its own place in source control and I
>     manually deploy it with Maven when I make changes.
>  2. You need to do this before creating any Project POMs that reference
>     it because they should reference it via Maven and not the file
>     system - if you work in a large company you will soon discover why.
>  3. There is of course a bootstrapping issue because now the project
>     POMs need to know how to find your Repository Manager, which is why
>     I include that information in the top level (Corporate) POM so
>     people can use it as a reference.
>  4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
>  5. We are still developing our corporate repository infrastructure so
>     the content of the Corporate POM will evolve over time as our
>     corporate governance and policies are better codified.
> 
> Does that help?

[snip]

> <modules>
> <module>platform.Java</module>
> <module>platform.NET</module>
> </modules>

[snip]

It's a bad idea to declare modules in a global (resp. corporate POM). Such a 
POM should be a project on its own with no submodules. Or do you think the 
Apache parent POM references all projects at Apache that use Maven directly 
(or indirectly)?

A project POM may now refer the global parent either using a specific 
version (to pin down a specific set of versions and dependencies) or a 
SNAPSHOT to use the latest entries/updates of the global POM.

- Jörg


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Manfred Moser <ma...@mosabuam.com>.
I did a blog post about this ages ago..

http://www.mosabuam.com/2009/10/company-super-pom-a-maven-practice

Keep in mind that this is a few years old so the versions and such are 
out of date.. but the concept still applies.

manfred
http://simpligility.com

On 12-03-14 02:34 PM, Amir Gheibi wrote:
> Hi Eric,
>
> I was wondering why your project POM's packaging type is "POM". If I understand correctly, with "POM" packaging type you'd only get 3 default goals bound to their phases (I read it here: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings).
>
> Thanks,
> Amir
>
> -----Original Message-----
> From: Eric Kolotyluk [mailto:eric.kolotyluk@gmail.com]
> Sent: March-14-12 2:22 PM
> To: users@maven.apache.org
> Subject: Re: Which is the BEST Approach to define Global POM.XML
>
> What I do is have a top-level POM like (see below), and then I have my top level project POMs reference that (see further below). This may not be the best example, as I am still in the process of building the infrastructure, but
>
>   1. I put the Parent POM in its own place in source control and I
>      manually deploy it with Maven when I make changes.
>   2. You need to do this before creating any Project POMs that reference
>      it because they should reference it via Maven and not the file
>      system - if you work in a large company you will soon discover why.
>   3. There is of course a bootstrapping issue because now the project
>      POMs need to know how to find your Repository Manager, which is why
>      I include that information in the top level (Corporate) POM so
>      people can use it as a reference.
>   4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
>   5. We are still developing our corporate repository infrastructure so
>      the content of the Corporate POM will evolve over time as our
>      corporate governance and policies are better codified.
>
> Does that help?
>
> <?xml version="1.0" encoding="UTF-8"?>
> <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/xsd/maven-4.0.0.xsd">
> <!--
>          Copyright (c) My Company 2012
>
>          Proprietary&  Confidential
>
>          This is the top level POM for My Company Maven projects. It contains rules and standards common to all projects.
>
>          Changes:
>
>          2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
>            Created initial version for check-in into source control.
>
>          2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
>            Reconfigured for Nexus 2.0 on sonatype.
>      -->
> <modelVersion>4.0.0</modelVersion>
> <groupId>com</groupId>
> <artifactId>my-company</artifactId>
> <version>0.0.1-SNAPSHOT</version>
> <packaging>pom</packaging>
> <name>My Company Corporate POM</name>
> <description>Corporate Project Object Module for standard conventions and rules.</description>  <developers>  <developer>  <id>10069959</id>  <name>Eric Kolotyluk</name>  <email>eric.kolotyluk@gmail.com</email>
> <organization>My Company Ltd.</organization>  <timezone>Vancouver PDT</timezone>  <roles>  <role>Software Architect</role>  <role>Software Developer</role>  </roles>  </developer>  </developers>  <organization>  <name>My Company</name>  </organization>  <distributionManagement>  <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
> <repository>
> <uniqueVersion>false</uniqueVersion>
> <id>nexus</id>
> <name>My Company Release Repository</name>  <url>http://sonatype:8081/nexus/content/repositories/releases</url>
> <layout>default</layout>
> </repository>
> <snapshotRepository>
> <id>nexus</id>
> <name>My Company Snapshot Repository</name>  <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
> <layout>default</layout>
> </snapshotRepository>
> </distributionManagement>
> <build>
> </build>
> <repositories>
> <repository>
> <releases>
> <updatePolicy>always</updatePolicy>
> </releases>
> <id>info.collide.mvn</id>
> <name>Collide</name>
> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
> </repository>
> <repository>
> <id>thirdparty</id>
> <name>3rd party</name>
> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
> </repository>
> </repositories>
> <dependencies>
> </dependencies>
> <reporting>
> <plugins>
> </plugins>
> </reporting>
> <dependencyManagement>
> </dependencyManagement>
> <properties>
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> </properties>
> </project>
>
> - - - - - - -
>
> <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/xsd/maven-4.0.0.xsd">
> <modelVersion>4.0.0</modelVersion>
> <parent>
> <groupId>com</groupId>
> <artifactId>my-company</artifactId>
> <version>0.0.1-SNAPSHOT</version>
> </parent>
> <groupId>com.my-company</groupId>
> <artifactId>intersystem</artifactId>
> <version>0.0.2-SNAPSHOT</version>
> <packaging>pom</packaging>
> <name>My Company Intersystem</name>
> <description>Service layer for collaborative, distributed applications and services</description>  <licenses>  <license>  <name>My Company Intersystem</name>  <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuidelines/Intersystem/default.aspx</url>
> <distribution>repo</distribution>
> </license>
> </licenses>
> <developers>
> <developer>
> <id>10069959</id>
> <name>Eric Kolotyluk</name>
> <email>eric.kolotyluk@gmail.com</email>
> <organization>My Company</organization>
> <timezone>Vancouver PDT</timezone>
> <roles>
> <role>Software Architect</role>
> <role>Software Developer</role>
> <role>Intersystem Architect</role>
> </roles>
> </developer>
> </developers>
> <organization>
> <name>My Company</name>
> </organization>
> <distributionManagement>
> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
> <repository>
> <uniqueVersion>false</uniqueVersion>
> <id>nexus</id>
> <name>My Company Release Repository</name>  <url>http://sonatype:8081/nexus/content/repositories/releases</url>
> <layout>default</layout>
> </repository>
> <snapshotRepository>
> <id>nexus</id>
> <name>My Company Snapshot Repository</name>  <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
> <layout>default</layout>
> </snapshotRepository>
> </distributionManagement>
> <build>
> </build>
> <repositories>
> <repository>
> <releases>
> <updatePolicy>always</updatePolicy>
> </releases>
> <id>info.collide.mvn</id>
> <name>Collide</name>
> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
> </repository>
> <repository>
> <id>thirdparty</id>
> <name>3rd party</name>
> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
> </repository>
> </repositories>
> <dependencies>
> </dependencies>
> <reporting>
> <plugins>
> </plugins>
> </reporting>
> <dependencyManagement>
> </dependencyManagement>
> <properties>
> <net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> </properties>
> <modules>
> <module>platform.Java</module>
> <module>platform.NET</module>
> </modules>
> </project>
>
> On 2012-03-14 1:29 PM, Daivish Shah wrote:
>> Hi Maven Team,
>>
>> I am trying to find out what is the best way to define company
>> specific GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>>
>> Can some one provide me guideline on that ? Is that going to be
>> profile or just simple POM.XML ? And how to inherit that. Please
>> provide me guideline to implement it. As this is very critical before
>> we implement all projects with MAVEN.
>>
>> Thanks,
>> Daivish.
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>


Re: Which is the BEST Approach to define Global POM.XML

Posted by Barrie Treloar <ba...@gmail.com>.
On Thu, Mar 15, 2012 at 8:04 AM, Amir Gheibi <ag...@fmep.ag.gov.bc.ca> wrote:
> Hi Eric,
>
> I was wondering why your project POM's packaging type is "POM". If I understand correctly, with "POM" packaging type you'd only get 3 default goals bound to their phases (I read it here: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings).

The top level pom's types are always pom.
Since they never build any artifacts.

The corporate one is more like a general defaults, so it doesn't build
anything => use pom.
The top level project often has modules, in which case it MUST be pom.

Which other lifecycles did you expect to be able to run on something
that doesn't itself build an artifact?
This is not the same as being able to run "mvn compile" at the top
level and have this command also run in all the modules.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Eric Kolotyluk <er...@gmail.com>.
You are most welcome - and the blog is super cool - I wish I had seen it 
a long time ago.

Cheers, Eric

On 2012-03-14 5:33 PM, Daivish Shah wrote:
> Thanks all for quick responses !!!
>
> Special Thanks to Eric Kolotyluk and Manfred Moser.
>
> Blog is super cool. Thanks for posting it.
> *
> *
> *
> *
>
> On Wed, Mar 14, 2012 at 2:51 PM, Amir Gheibi<ag...@fmep.ag.gov.bc.ca>wrote:
>
>> Got it. Thanks.
>>
>> -----Original Message-----
>> From: Eric Kolotyluk [mailto:eric.kolotyluk@gmail.com]
>> Sent: March-14-12 2:57 PM
>> To: Amir Gheibi
>> Cc: Maven Users List
>> Subject: Re: Which is the BEST Approach to define Global POM.XML
>>
>> Amir, my Project POM has more modules inside (platform.Java&
>> platform.NET), and they in turn are packaging type "POM" because there are
>> more modules in those, that typically are types like "JAR" so my structure
>> looks like
>>
>> Corporate POM
>> +-- Project POM 1
>> +--+-- Platform POM 1.1
>> +--+--+-- Artifact POM 1.1.1
>> +--+--+-- Artifact POM 1.1.2
>> +--+-- Platform POM 1.2
>> +--+--+-- Artifact POM 1.2.1
>> +--+--+-- Artifact POM 1.2.2
>>
>> The Project and Platform POM are just there for structural reasons. For
>> example if I want I can do a clean and deploy in the Project POM directory
>> and everything gets built, tested and deployed, or I work on more specific
>> pieces.
>>
>> Cheers, Eric
>>
>> On 2012-03-14 2:34 PM, Amir Gheibi wrote:
>>> Hi Eric,
>>>
>>> I was wondering why your project POM's packaging type is "POM". If I
>> understand correctly, with "POM" packaging type you'd only get 3 default
>> goals bound to their phases (I read it here:
>> http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings
>> ).
>>> Thanks,
>>> Amir
>>>
>>> -----Original Message-----
>>> From: Eric Kolotyluk [mailto:eric.kolotyluk@gmail.com]
>>> Sent: March-14-12 2:22 PM
>>> To: users@maven.apache.org
>>> Subject: Re: Which is the BEST Approach to define Global POM.XML
>>>
>>> What I do is have a top-level POM like (see below), and then I have my
>>> top level project POMs reference that (see further below). This may
>>> not be the best example, as I am still in the process of building the
>>> infrastructure, but
>>>
>>>    1. I put the Parent POM in its own place in source control and I
>>>       manually deploy it with Maven when I make changes.
>>>    2. You need to do this before creating any Project POMs that reference
>>>       it because they should reference it via Maven and not the file
>>>       system - if you work in a large company you will soon discover why.
>>>    3. There is of course a bootstrapping issue because now the project
>>>       POMs need to know how to find your Repository Manager, which is why
>>>       I include that information in the top level (Corporate) POM so
>>>       people can use it as a reference.
>>>    4. As you may gather I am using Sonatype's Nexus as a Repository
>> Manager.
>>>    5. We are still developing our corporate repository infrastructure so
>>>       the content of the Corporate POM will evolve over time as our
>>>       corporate governance and policies are better codified.
>>>
>>> Does that help?
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>  <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/xsd/maven-4.0.0.xsd">
>>> <!--
>>>           Copyright (c) My Company 2012
>>>
>>>           Proprietary&   Confidential
>>>
>>>           This is the top level POM for My Company Maven projects. It
>> contains rules and standards common to all projects.
>>>           Changes:
>>>
>>>           2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
>>>             Created initial version for check-in into source control.
>>>
>>>           2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
>>>             Reconfigured for Nexus 2.0 on sonatype.
>>>       -->
>>> <modelVersion>4.0.0</modelVersion>
>>> <groupId>com</groupId>
>>> <artifactId>my-company</artifactId>
>>> <version>0.0.1-SNAPSHOT</version>
>>> <packaging>pom</packaging>
>>> <name>My Company Corporate POM</name>
>>> <description>Corporate Project Object Module for standard conventions
>>> and rules.</description>   <developers>   <developer>   <id>10069959</id>
>>> <name>Eric Kolotyluk</name>   <email>eric.kolotyluk@gmail.com</email>
>>> <organization>My Company Ltd.</organization>   <timezone>Vancouver
>>> PDT</timezone>   <roles>   <role>Software Architect</role>
>>> <role>Software Developer</role>   </roles>   </developer>   </developers>
>>> <organization>   <name>My Company</name>   </organization>
>>> <distributionManagement>
>>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloa
>>> dUrl>
>>> <repository>
>>> <uniqueVersion>false</uniqueVersion>
>>> <id>nexus</id>
>>> <name>My Company Release Repository</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>>> <layout>default</layout>
>>> </repository>
>>> <snapshotRepository>
>>> <id>nexus</id>
>>> <name>My Company Snapshot Repository</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>>> <layout>default</layout>
>>> </snapshotRepository>
>>> </distributionManagement>
>>> <build>
>>> </build>
>>> <repositories>
>>> <repository>
>>> <releases>
>>> <updatePolicy>always</updatePolicy>
>>> </releases>
>>> <id>info.collide.mvn</id>
>>> <name>Collide</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/
>>> </url>
>>> </repository>
>>> <repository>
>>> <id>thirdparty</id>
>>> <name>3rd party</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>>> </repository>
>>> </repositories>
>>> <dependencies>
>>> </dependencies>
>>> <reporting>
>>> <plugins>
>>> </plugins>
>>> </reporting>
>>> <dependencyManagement>
>>> </dependencyManagement>
>>> <properties>
>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>> </properties>
>>> </project>
>>>
>>> - - - - - - -
>>>
>>> <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/xsd/maven-4.0.0.xsd">
>>> <modelVersion>4.0.0</modelVersion>
>>> <parent>
>>> <groupId>com</groupId>
>>> <artifactId>my-company</artifactId>
>>> <version>0.0.1-SNAPSHOT</version>
>>> </parent>
>>> <groupId>com.my-company</groupId>
>>> <artifactId>intersystem</artifactId>
>>> <version>0.0.2-SNAPSHOT</version>
>>> <packaging>pom</packaging>
>>> <name>My Company Intersystem</name>
>>> <description>Service layer for collaborative, distributed applications
>>> and services</description>   <licenses>   <license>   <name>My Company
>>> Intersystem</name>
>>> <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuid
>>> elines/Intersystem/default.aspx</url>
>>> <distribution>repo</distribution>
>>> </license>
>>> </licenses>
>>> <developers>
>>> <developer>
>>> <id>10069959</id>
>>> <name>Eric Kolotyluk</name>
>>> <email>eric.kolotyluk@gmail.com</email>
>>> <organization>My Company</organization>  <timezone>Vancouver
>>> PDT</timezone>  <roles>  <role>Software Architect</role>  <role>Software
>>> Developer</role>  <role>Intersystem Architect</role>  </roles>
>>> </developer>  </developers>  <organization>  <name>My Company</name>
>>> </organization>  <distributionManagement>
>>> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloa
>>> dUrl>
>>> <repository>
>>> <uniqueVersion>false</uniqueVersion>
>>> <id>nexus</id>
>>> <name>My Company Release Repository</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
>>> <layout>default</layout>
>>> </repository>
>>> <snapshotRepository>
>>> <id>nexus</id>
>>> <name>My Company Snapshot Repository</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
>>> <layout>default</layout>
>>> </snapshotRepository>
>>> </distributionManagement>
>>> <build>
>>> </build>
>>> <repositories>
>>> <repository>
>>> <releases>
>>> <updatePolicy>always</updatePolicy>
>>> </releases>
>>> <id>info.collide.mvn</id>
>>> <name>Collide</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/
>>> </url>
>>> </repository>
>>> <repository>
>>> <id>thirdparty</id>
>>> <name>3rd party</name>
>>> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
>>> </repository>
>>> </repositories>
>>> <dependencies>
>>> </dependencies>
>>> <reporting>
>>> <plugins>
>>> </plugins>
>>> </reporting>
>>> <dependencyManagement>
>>> </dependencyManagement>
>>> <properties>
>>> <net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>> </properties>
>>> <modules>
>>> <module>platform.Java</module>
>>> <module>platform.NET</module>
>>> </modules>
>>> </project>
>>>
>>> On 2012-03-14 1:29 PM, Daivish Shah wrote:
>>>> Hi Maven Team,
>>>>
>>>> I am trying to find out what is the best way to define company
>>>> specific GLOBAL POM.XML. Which each team can inherit it in EACH
>> Projects.
>>>> Can some one provide me guideline on that ? Is that going to be
>>>> profile or just simple POM.XML ? And how to inherit that. Please
>>>> provide me guideline to implement it. As this is very critical before
>>>> we implement all projects with MAVEN.
>>>>
>>>> Thanks,
>>>> Daivish.
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>>> For additional commands, e-mail: users-help@maven.apache.org
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Daivish Shah <da...@gmail.com>.
Thanks all for quick responses !!!

Special Thanks to Eric Kolotyluk and Manfred Moser.

Blog is super cool. Thanks for posting it.
*
*
*
*

On Wed, Mar 14, 2012 at 2:51 PM, Amir Gheibi <ag...@fmep.ag.gov.bc.ca>wrote:

> Got it. Thanks.
>
> -----Original Message-----
> From: Eric Kolotyluk [mailto:eric.kolotyluk@gmail.com]
> Sent: March-14-12 2:57 PM
> To: Amir Gheibi
> Cc: Maven Users List
> Subject: Re: Which is the BEST Approach to define Global POM.XML
>
> Amir, my Project POM has more modules inside (platform.Java &
> platform.NET), and they in turn are packaging type "POM" because there are
> more modules in those, that typically are types like "JAR" so my structure
> looks like
>
> Corporate POM
> +-- Project POM 1
> +--+-- Platform POM 1.1
> +--+--+-- Artifact POM 1.1.1
> +--+--+-- Artifact POM 1.1.2
> +--+-- Platform POM 1.2
> +--+--+-- Artifact POM 1.2.1
> +--+--+-- Artifact POM 1.2.2
>
> The Project and Platform POM are just there for structural reasons. For
> example if I want I can do a clean and deploy in the Project POM directory
> and everything gets built, tested and deployed, or I work on more specific
> pieces.
>
> Cheers, Eric
>
> On 2012-03-14 2:34 PM, Amir Gheibi wrote:
> > Hi Eric,
> >
> > I was wondering why your project POM's packaging type is "POM". If I
> understand correctly, with "POM" packaging type you'd only get 3 default
> goals bound to their phases (I read it here:
> http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings
> ).
> >
> > Thanks,
> > Amir
> >
> > -----Original Message-----
> > From: Eric Kolotyluk [mailto:eric.kolotyluk@gmail.com]
> > Sent: March-14-12 2:22 PM
> > To: users@maven.apache.org
> > Subject: Re: Which is the BEST Approach to define Global POM.XML
> >
> > What I do is have a top-level POM like (see below), and then I have my
> > top level project POMs reference that (see further below). This may
> > not be the best example, as I am still in the process of building the
> > infrastructure, but
> >
> >   1. I put the Parent POM in its own place in source control and I
> >      manually deploy it with Maven when I make changes.
> >   2. You need to do this before creating any Project POMs that reference
> >      it because they should reference it via Maven and not the file
> >      system - if you work in a large company you will soon discover why.
> >   3. There is of course a bootstrapping issue because now the project
> >      POMs need to know how to find your Repository Manager, which is why
> >      I include that information in the top level (Corporate) POM so
> >      people can use it as a reference.
> >   4. As you may gather I am using Sonatype's Nexus as a Repository
> Manager.
> >   5. We are still developing our corporate repository infrastructure so
> >      the content of the Corporate POM will evolve over time as our
> >      corporate governance and policies are better codified.
> >
> > Does that help?
> >
> > <?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd">
> > <!--
> >          Copyright (c) My Company 2012
> >
> >          Proprietary&  Confidential
> >
> >          This is the top level POM for My Company Maven projects. It
> contains rules and standards common to all projects.
> >
> >          Changes:
> >
> >          2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
> >            Created initial version for check-in into source control.
> >
> >          2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
> >            Reconfigured for Nexus 2.0 on sonatype.
> >      -->
> > <modelVersion>4.0.0</modelVersion>
> > <groupId>com</groupId>
> > <artifactId>my-company</artifactId>
> > <version>0.0.1-SNAPSHOT</version>
> > <packaging>pom</packaging>
> > <name>My Company Corporate POM</name>
> > <description>Corporate Project Object Module for standard conventions
> > and rules.</description>  <developers>  <developer>  <id>10069959</id>
> > <name>Eric Kolotyluk</name>  <email>eric.kolotyluk@gmail.com</email>
> > <organization>My Company Ltd.</organization>  <timezone>Vancouver
> > PDT</timezone>  <roles>  <role>Software Architect</role>
> > <role>Software Developer</role>  </roles>  </developer>  </developers>
> > <organization>  <name>My Company</name>  </organization>
> > <distributionManagement>
> > <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloa
> > dUrl>
> > <repository>
> > <uniqueVersion>false</uniqueVersion>
> > <id>nexus</id>
> > <name>My Company Release Repository</name>
> > <url>http://sonatype:8081/nexus/content/repositories/releases</url>
> > <layout>default</layout>
> > </repository>
> > <snapshotRepository>
> > <id>nexus</id>
> > <name>My Company Snapshot Repository</name>
> > <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
> > <layout>default</layout>
> > </snapshotRepository>
> > </distributionManagement>
> > <build>
> > </build>
> > <repositories>
> > <repository>
> > <releases>
> > <updatePolicy>always</updatePolicy>
> > </releases>
> > <id>info.collide.mvn</id>
> > <name>Collide</name>
> > <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/
> > </url>
> > </repository>
> > <repository>
> > <id>thirdparty</id>
> > <name>3rd party</name>
> > <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
> > </repository>
> > </repositories>
> > <dependencies>
> > </dependencies>
> > <reporting>
> > <plugins>
> > </plugins>
> > </reporting>
> > <dependencyManagement>
> > </dependencyManagement>
> > <properties>
> > <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> > </properties>
> > </project>
> >
> > - - - - - - -
> >
> > <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/xsd/maven-4.0.0.xsd">
> > <modelVersion>4.0.0</modelVersion>
> > <parent>
> > <groupId>com</groupId>
> > <artifactId>my-company</artifactId>
> > <version>0.0.1-SNAPSHOT</version>
> > </parent>
> > <groupId>com.my-company</groupId>
> > <artifactId>intersystem</artifactId>
> > <version>0.0.2-SNAPSHOT</version>
> > <packaging>pom</packaging>
> > <name>My Company Intersystem</name>
> > <description>Service layer for collaborative, distributed applications
> > and services</description>  <licenses>  <license>  <name>My Company
> > Intersystem</name>
> > <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuid
> > elines/Intersystem/default.aspx</url>
> > <distribution>repo</distribution>
> > </license>
> > </licenses>
> > <developers>
> > <developer>
> > <id>10069959</id>
> > <name>Eric Kolotyluk</name>
> > <email>eric.kolotyluk@gmail.com</email>
> > <organization>My Company</organization> <timezone>Vancouver
> > PDT</timezone> <roles> <role>Software Architect</role> <role>Software
> > Developer</role> <role>Intersystem Architect</role> </roles>
> > </developer> </developers> <organization> <name>My Company</name>
> > </organization> <distributionManagement>
> > <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloa
> > dUrl>
> > <repository>
> > <uniqueVersion>false</uniqueVersion>
> > <id>nexus</id>
> > <name>My Company Release Repository</name>
> > <url>http://sonatype:8081/nexus/content/repositories/releases</url>
> > <layout>default</layout>
> > </repository>
> > <snapshotRepository>
> > <id>nexus</id>
> > <name>My Company Snapshot Repository</name>
> > <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
> > <layout>default</layout>
> > </snapshotRepository>
> > </distributionManagement>
> > <build>
> > </build>
> > <repositories>
> > <repository>
> > <releases>
> > <updatePolicy>always</updatePolicy>
> > </releases>
> > <id>info.collide.mvn</id>
> > <name>Collide</name>
> > <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/
> > </url>
> > </repository>
> > <repository>
> > <id>thirdparty</id>
> > <name>3rd party</name>
> > <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
> > </repository>
> > </repositories>
> > <dependencies>
> > </dependencies>
> > <reporting>
> > <plugins>
> > </plugins>
> > </reporting>
> > <dependencyManagement>
> > </dependencyManagement>
> > <properties>
> > <net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
> > <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> > </properties>
> > <modules>
> > <module>platform.Java</module>
> > <module>platform.NET</module>
> > </modules>
> > </project>
> >
> > On 2012-03-14 1:29 PM, Daivish Shah wrote:
> >> Hi Maven Team,
> >>
> >> I am trying to find out what is the best way to define company
> >> specific GLOBAL POM.XML. Which each team can inherit it in EACH
> Projects.
> >>
> >> Can some one provide me guideline on that ? Is that going to be
> >> profile or just simple POM.XML ? And how to inherit that. Please
> >> provide me guideline to implement it. As this is very critical before
> >> we implement all projects with MAVEN.
> >>
> >> Thanks,
> >> Daivish.
> >>
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > For additional commands, e-mail: users-help@maven.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>

RE: Which is the BEST Approach to define Global POM.XML

Posted by Amir Gheibi <ag...@fmep.ag.gov.bc.ca>.
Got it. Thanks.

-----Original Message-----
From: Eric Kolotyluk [mailto:eric.kolotyluk@gmail.com]
Sent: March-14-12 2:57 PM
To: Amir Gheibi
Cc: Maven Users List
Subject: Re: Which is the BEST Approach to define Global POM.XML

Amir, my Project POM has more modules inside (platform.Java & platform.NET), and they in turn are packaging type "POM" because there are more modules in those, that typically are types like "JAR" so my structure looks like

Corporate POM
+-- Project POM 1
+--+-- Platform POM 1.1
+--+--+-- Artifact POM 1.1.1
+--+--+-- Artifact POM 1.1.2
+--+-- Platform POM 1.2
+--+--+-- Artifact POM 1.2.1
+--+--+-- Artifact POM 1.2.2

The Project and Platform POM are just there for structural reasons. For example if I want I can do a clean and deploy in the Project POM directory and everything gets built, tested and deployed, or I work on more specific pieces.

Cheers, Eric

On 2012-03-14 2:34 PM, Amir Gheibi wrote:
> Hi Eric,
>
> I was wondering why your project POM's packaging type is "POM". If I understand correctly, with "POM" packaging type you'd only get 3 default goals bound to their phases (I read it here: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings).
>
> Thanks,
> Amir
>
> -----Original Message-----
> From: Eric Kolotyluk [mailto:eric.kolotyluk@gmail.com]
> Sent: March-14-12 2:22 PM
> To: users@maven.apache.org
> Subject: Re: Which is the BEST Approach to define Global POM.XML
>
> What I do is have a top-level POM like (see below), and then I have my
> top level project POMs reference that (see further below). This may
> not be the best example, as I am still in the process of building the
> infrastructure, but
>
>   1. I put the Parent POM in its own place in source control and I
>      manually deploy it with Maven when I make changes.
>   2. You need to do this before creating any Project POMs that reference
>      it because they should reference it via Maven and not the file
>      system - if you work in a large company you will soon discover why.
>   3. There is of course a bootstrapping issue because now the project
>      POMs need to know how to find your Repository Manager, which is why
>      I include that information in the top level (Corporate) POM so
>      people can use it as a reference.
>   4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
>   5. We are still developing our corporate repository infrastructure so
>      the content of the Corporate POM will evolve over time as our
>      corporate governance and policies are better codified.
>
> Does that help?
>
> <?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd">
> <!--
>          Copyright (c) My Company 2012
>
>          Proprietary&  Confidential
>
>          This is the top level POM for My Company Maven projects. It contains rules and standards common to all projects.
>
>          Changes:
>
>          2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
>            Created initial version for check-in into source control.
>
>          2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
>            Reconfigured for Nexus 2.0 on sonatype.
>      -->
> <modelVersion>4.0.0</modelVersion>
> <groupId>com</groupId>
> <artifactId>my-company</artifactId>
> <version>0.0.1-SNAPSHOT</version>
> <packaging>pom</packaging>
> <name>My Company Corporate POM</name>
> <description>Corporate Project Object Module for standard conventions
> and rules.</description>  <developers>  <developer>  <id>10069959</id>
> <name>Eric Kolotyluk</name>  <email>eric.kolotyluk@gmail.com</email>
> <organization>My Company Ltd.</organization>  <timezone>Vancouver
> PDT</timezone>  <roles>  <role>Software Architect</role>
> <role>Software Developer</role>  </roles>  </developer>  </developers>
> <organization>  <name>My Company</name>  </organization>
> <distributionManagement>
> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloa
> dUrl>
> <repository>
> <uniqueVersion>false</uniqueVersion>
> <id>nexus</id>
> <name>My Company Release Repository</name>
> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
> <layout>default</layout>
> </repository>
> <snapshotRepository>
> <id>nexus</id>
> <name>My Company Snapshot Repository</name>
> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
> <layout>default</layout>
> </snapshotRepository>
> </distributionManagement>
> <build>
> </build>
> <repositories>
> <repository>
> <releases>
> <updatePolicy>always</updatePolicy>
> </releases>
> <id>info.collide.mvn</id>
> <name>Collide</name>
> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/
> </url>
> </repository>
> <repository>
> <id>thirdparty</id>
> <name>3rd party</name>
> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
> </repository>
> </repositories>
> <dependencies>
> </dependencies>
> <reporting>
> <plugins>
> </plugins>
> </reporting>
> <dependencyManagement>
> </dependencyManagement>
> <properties>
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> </properties>
> </project>
>
> - - - - - - -
>
> <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/xsd/maven-4.0.0.xsd">
> <modelVersion>4.0.0</modelVersion>
> <parent>
> <groupId>com</groupId>
> <artifactId>my-company</artifactId>
> <version>0.0.1-SNAPSHOT</version>
> </parent>
> <groupId>com.my-company</groupId>
> <artifactId>intersystem</artifactId>
> <version>0.0.2-SNAPSHOT</version>
> <packaging>pom</packaging>
> <name>My Company Intersystem</name>
> <description>Service layer for collaborative, distributed applications
> and services</description>  <licenses>  <license>  <name>My Company
> Intersystem</name>
> <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuid
> elines/Intersystem/default.aspx</url>
> <distribution>repo</distribution>
> </license>
> </licenses>
> <developers>
> <developer>
> <id>10069959</id>
> <name>Eric Kolotyluk</name>
> <email>eric.kolotyluk@gmail.com</email>
> <organization>My Company</organization> <timezone>Vancouver
> PDT</timezone> <roles> <role>Software Architect</role> <role>Software
> Developer</role> <role>Intersystem Architect</role> </roles>
> </developer> </developers> <organization> <name>My Company</name>
> </organization> <distributionManagement>
> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloa
> dUrl>
> <repository>
> <uniqueVersion>false</uniqueVersion>
> <id>nexus</id>
> <name>My Company Release Repository</name>
> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
> <layout>default</layout>
> </repository>
> <snapshotRepository>
> <id>nexus</id>
> <name>My Company Snapshot Repository</name>
> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
> <layout>default</layout>
> </snapshotRepository>
> </distributionManagement>
> <build>
> </build>
> <repositories>
> <repository>
> <releases>
> <updatePolicy>always</updatePolicy>
> </releases>
> <id>info.collide.mvn</id>
> <name>Collide</name>
> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/
> </url>
> </repository>
> <repository>
> <id>thirdparty</id>
> <name>3rd party</name>
> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
> </repository>
> </repositories>
> <dependencies>
> </dependencies>
> <reporting>
> <plugins>
> </plugins>
> </reporting>
> <dependencyManagement>
> </dependencyManagement>
> <properties>
> <net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> </properties>
> <modules>
> <module>platform.Java</module>
> <module>platform.NET</module>
> </modules>
> </project>
>
> On 2012-03-14 1:29 PM, Daivish Shah wrote:
>> Hi Maven Team,
>>
>> I am trying to find out what is the best way to define company
>> specific GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>>
>> Can some one provide me guideline on that ? Is that going to be
>> profile or just simple POM.XML ? And how to inherit that. Please
>> provide me guideline to implement it. As this is very critical before
>> we implement all projects with MAVEN.
>>
>> Thanks,
>> Daivish.
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Eric Kolotyluk <er...@gmail.com>.
Amir, my Project POM has more modules inside (platform.Java & 
platform.NET), and they in turn are packaging type "POM" because there 
are more modules in those, that typically are types like "JAR" so my 
structure looks like

Corporate POM
+-- Project POM 1
+--+-- Platform POM 1.1
+--+--+-- Artifact POM 1.1.1
+--+--+-- Artifact POM 1.1.2
+--+-- Platform POM 1.2
+--+--+-- Artifact POM 1.2.1
+--+--+-- Artifact POM 1.2.2

The Project and Platform POM are just there for structural reasons. For 
example if I want I can do a clean and deploy in the Project POM 
directory and everything gets built, tested and deployed, or I work on 
more specific pieces.

Cheers, Eric

On 2012-03-14 2:34 PM, Amir Gheibi wrote:
> Hi Eric,
>
> I was wondering why your project POM's packaging type is "POM". If I understand correctly, with "POM" packaging type you'd only get 3 default goals bound to their phases (I read it here: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings).
>
> Thanks,
> Amir
>
> -----Original Message-----
> From: Eric Kolotyluk [mailto:eric.kolotyluk@gmail.com]
> Sent: March-14-12 2:22 PM
> To: users@maven.apache.org
> Subject: Re: Which is the BEST Approach to define Global POM.XML
>
> What I do is have a top-level POM like (see below), and then I have my top level project POMs reference that (see further below). This may not be the best example, as I am still in the process of building the infrastructure, but
>
>   1. I put the Parent POM in its own place in source control and I
>      manually deploy it with Maven when I make changes.
>   2. You need to do this before creating any Project POMs that reference
>      it because they should reference it via Maven and not the file
>      system - if you work in a large company you will soon discover why.
>   3. There is of course a bootstrapping issue because now the project
>      POMs need to know how to find your Repository Manager, which is why
>      I include that information in the top level (Corporate) POM so
>      people can use it as a reference.
>   4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
>   5. We are still developing our corporate repository infrastructure so
>      the content of the Corporate POM will evolve over time as our
>      corporate governance and policies are better codified.
>
> Does that help?
>
> <?xml version="1.0" encoding="UTF-8"?>
> <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/xsd/maven-4.0.0.xsd">
> <!--
>          Copyright (c) My Company 2012
>
>          Proprietary&  Confidential
>
>          This is the top level POM for My Company Maven projects. It contains rules and standards common to all projects.
>
>          Changes:
>
>          2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
>            Created initial version for check-in into source control.
>
>          2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
>            Reconfigured for Nexus 2.0 on sonatype.
>      -->
> <modelVersion>4.0.0</modelVersion>
> <groupId>com</groupId>
> <artifactId>my-company</artifactId>
> <version>0.0.1-SNAPSHOT</version>
> <packaging>pom</packaging>
> <name>My Company Corporate POM</name>
> <description>Corporate Project Object Module for standard conventions and rules.</description>  <developers>  <developer>  <id>10069959</id>  <name>Eric Kolotyluk</name>  <email>eric.kolotyluk@gmail.com</email>
> <organization>My Company Ltd.</organization>  <timezone>Vancouver PDT</timezone>  <roles>  <role>Software Architect</role>  <role>Software Developer</role>  </roles>  </developer>  </developers>  <organization>  <name>My Company</name>  </organization>  <distributionManagement>  <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
> <repository>
> <uniqueVersion>false</uniqueVersion>
> <id>nexus</id>
> <name>My Company Release Repository</name>  <url>http://sonatype:8081/nexus/content/repositories/releases</url>
> <layout>default</layout>
> </repository>
> <snapshotRepository>
> <id>nexus</id>
> <name>My Company Snapshot Repository</name>  <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
> <layout>default</layout>
> </snapshotRepository>
> </distributionManagement>
> <build>
> </build>
> <repositories>
> <repository>
> <releases>
> <updatePolicy>always</updatePolicy>
> </releases>
> <id>info.collide.mvn</id>
> <name>Collide</name>
> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
> </repository>
> <repository>
> <id>thirdparty</id>
> <name>3rd party</name>
> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
> </repository>
> </repositories>
> <dependencies>
> </dependencies>
> <reporting>
> <plugins>
> </plugins>
> </reporting>
> <dependencyManagement>
> </dependencyManagement>
> <properties>
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> </properties>
> </project>
>
> - - - - - - -
>
> <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/xsd/maven-4.0.0.xsd">
> <modelVersion>4.0.0</modelVersion>
> <parent>
> <groupId>com</groupId>
> <artifactId>my-company</artifactId>
> <version>0.0.1-SNAPSHOT</version>
> </parent>
> <groupId>com.my-company</groupId>
> <artifactId>intersystem</artifactId>
> <version>0.0.2-SNAPSHOT</version>
> <packaging>pom</packaging>
> <name>My Company Intersystem</name>
> <description>Service layer for collaborative, distributed applications and services</description>  <licenses>  <license>  <name>My Company Intersystem</name>  <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuidelines/Intersystem/default.aspx</url>
> <distribution>repo</distribution>
> </license>
> </licenses>
> <developers>
> <developer>
> <id>10069959</id>
> <name>Eric Kolotyluk</name>
> <email>eric.kolotyluk@gmail.com</email>
> <organization>My Company</organization>
> <timezone>Vancouver PDT</timezone>
> <roles>
> <role>Software Architect</role>
> <role>Software Developer</role>
> <role>Intersystem Architect</role>
> </roles>
> </developer>
> </developers>
> <organization>
> <name>My Company</name>
> </organization>
> <distributionManagement>
> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
> <repository>
> <uniqueVersion>false</uniqueVersion>
> <id>nexus</id>
> <name>My Company Release Repository</name>  <url>http://sonatype:8081/nexus/content/repositories/releases</url>
> <layout>default</layout>
> </repository>
> <snapshotRepository>
> <id>nexus</id>
> <name>My Company Snapshot Repository</name>  <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
> <layout>default</layout>
> </snapshotRepository>
> </distributionManagement>
> <build>
> </build>
> <repositories>
> <repository>
> <releases>
> <updatePolicy>always</updatePolicy>
> </releases>
> <id>info.collide.mvn</id>
> <name>Collide</name>
> <url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
> </repository>
> <repository>
> <id>thirdparty</id>
> <name>3rd party</name>
> <url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
> </repository>
> </repositories>
> <dependencies>
> </dependencies>
> <reporting>
> <plugins>
> </plugins>
> </reporting>
> <dependencyManagement>
> </dependencyManagement>
> <properties>
> <net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> </properties>
> <modules>
> <module>platform.Java</module>
> <module>platform.NET</module>
> </modules>
> </project>
>
> On 2012-03-14 1:29 PM, Daivish Shah wrote:
>> Hi Maven Team,
>>
>> I am trying to find out what is the best way to define company
>> specific GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>>
>> Can some one provide me guideline on that ? Is that going to be
>> profile or just simple POM.XML ? And how to inherit that. Please
>> provide me guideline to implement it. As this is very critical before
>> we implement all projects with MAVEN.
>>
>> Thanks,
>> Daivish.
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


RE: Which is the BEST Approach to define Global POM.XML

Posted by Amir Gheibi <ag...@fmep.ag.gov.bc.ca>.
Hi Eric,

I was wondering why your project POM's packaging type is "POM". If I understand correctly, with "POM" packaging type you'd only get 3 default goals bound to their phases (I read it here: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings).

Thanks,
Amir

-----Original Message-----
From: Eric Kolotyluk [mailto:eric.kolotyluk@gmail.com]
Sent: March-14-12 2:22 PM
To: users@maven.apache.org
Subject: Re: Which is the BEST Approach to define Global POM.XML

What I do is have a top-level POM like (see below), and then I have my top level project POMs reference that (see further below). This may not be the best example, as I am still in the process of building the infrastructure, but

 1. I put the Parent POM in its own place in source control and I
    manually deploy it with Maven when I make changes.
 2. You need to do this before creating any Project POMs that reference
    it because they should reference it via Maven and not the file
    system - if you work in a large company you will soon discover why.
 3. There is of course a bootstrapping issue because now the project
    POMs need to know how to find your Repository Manager, which is why
    I include that information in the top level (Corporate) POM so
    people can use it as a reference.
 4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
 5. We are still developing our corporate repository infrastructure so
    the content of the Corporate POM will evolve over time as our
    corporate governance and policies are better codified.

Does that help?

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<!--
        Copyright (c) My Company 2012

        Proprietary & Confidential

        This is the top level POM for My Company Maven projects. It contains rules and standards common to all projects.

        Changes:

        2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
          Created initial version for check-in into source control.

        2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
          Reconfigured for Nexus 2.0 on sonatype.
    -->
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>my-company</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>My Company Corporate POM</name>
<description>Corporate Project Object Module for standard conventions and rules.</description> <developers> <developer> <id>10069959</id> <name>Eric Kolotyluk</name> <email>eric.kolotyluk@gmail.com</email>
<organization>My Company Ltd.</organization> <timezone>Vancouver PDT</timezone> <roles> <role>Software Architect</role> <role>Software Developer</role> </roles> </developer> </developers> <organization> <name>My Company</name> </organization> <distributionManagement> <downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
<repository>
<uniqueVersion>false</uniqueVersion>
<id>nexus</id>
<name>My Company Release Repository</name> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
<layout>default</layout>
</repository>
<snapshotRepository>
<id>nexus</id>
<name>My Company Snapshot Repository</name> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
<layout>default</layout>
</snapshotRepository>
</distributionManagement>
<build>
</build>
<repositories>
<repository>
<releases>
<updatePolicy>always</updatePolicy>
</releases>
<id>info.collide.mvn</id>
<name>Collide</name>
<url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
</repository>
<repository>
<id>thirdparty</id>
<name>3rd party</name>
<url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
</repository>
</repositories>
<dependencies>
</dependencies>
<reporting>
<plugins>
</plugins>
</reporting>
<dependencyManagement>
</dependencyManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

- - - - - - -

<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com</groupId>
<artifactId>my-company</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.my-company</groupId>
<artifactId>intersystem</artifactId>
<version>0.0.2-SNAPSHOT</version>
<packaging>pom</packaging>
<name>My Company Intersystem</name>
<description>Service layer for collaborative, distributed applications and services</description> <licenses> <license> <name>My Company Intersystem</name> <url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuidelines/Intersystem/default.aspx</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>10069959</id>
<name>Eric Kolotyluk</name>
<email>eric.kolotyluk@gmail.com</email>
<organization>My Company</organization>
<timezone>Vancouver PDT</timezone>
<roles>
<role>Software Architect</role>
<role>Software Developer</role>
<role>Intersystem Architect</role>
</roles>
</developer>
</developers>
<organization>
<name>My Company</name>
</organization>
<distributionManagement>
<downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
<repository>
<uniqueVersion>false</uniqueVersion>
<id>nexus</id>
<name>My Company Release Repository</name> <url>http://sonatype:8081/nexus/content/repositories/releases</url>
<layout>default</layout>
</repository>
<snapshotRepository>
<id>nexus</id>
<name>My Company Snapshot Repository</name> <url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
<layout>default</layout>
</snapshotRepository>
</distributionManagement>
<build>
</build>
<repositories>
<repository>
<releases>
<updatePolicy>always</updatePolicy>
</releases>
<id>info.collide.mvn</id>
<name>Collide</name>
<url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
</repository>
<repository>
<id>thirdparty</id>
<name>3rd party</name>
<url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
</repository>
</repositories>
<dependencies>
</dependencies>
<reporting>
<plugins>
</plugins>
</reporting>
<dependencyManagement>
</dependencyManagement>
<properties>
<net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<modules>
<module>platform.Java</module>
<module>platform.NET</module>
</modules>
</project>

On 2012-03-14 1:29 PM, Daivish Shah wrote:
> Hi Maven Team,
>
> I am trying to find out what is the best way to define company
> specific GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>
> Can some one provide me guideline on that ? Is that going to be
> profile or just simple POM.XML ? And how to inherit that. Please
> provide me guideline to implement it. As this is very critical before
> we implement all projects with MAVEN.
>
> Thanks,
> Daivish.
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Eric Kolotyluk <er...@gmail.com>.
What I do is have a top-level POM like (see below), and then I have my 
top level project POMs reference that (see further below). This may not 
be the best example, as I am still in the process of building the 
infrastructure, but

 1. I put the Parent POM in its own place in source control and I
    manually deploy it with Maven when I make changes.
 2. You need to do this before creating any Project POMs that reference
    it because they should reference it via Maven and not the file
    system - if you work in a large company you will soon discover why.
 3. There is of course a bootstrapping issue because now the project
    POMs need to know how to find your Repository Manager, which is why
    I include that information in the top level (Corporate) POM so
    people can use it as a reference.
 4. As you may gather I am using Sonatype's Nexus as a Repository Manager.
 5. We are still developing our corporate repository infrastructure so
    the content of the Corporate POM will evolve over time as our
    corporate governance and policies are better codified.

Does that help?

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<!--
        Copyright © My Company 2012

        Proprietary & Confidential

        This is the top level POM for My Company Maven projects. It 
contains rules and standards common to all projects.

        Changes:

        2011-09-23 0.0.1-SNAPSHOT Eric Kolotyluk
          Created initial version for check-in into source control.

        2012-02-27 0.0.1-SNAPSHOT Eric Kolotyluk
          Reconfigured for Nexus 2.0 on sonatype.
    -->
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>my-company</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>My Company Corporate POM</name>
<description>Corporate Project Object Module for standard conventions 
and rules.</description>
<developers>
<developer>
<id>10069959</id>
<name>Eric Kolotyluk</name>
<email>eric.kolotyluk@gmail.com</email>
<organization>My Company Ltd.</organization>
<timezone>Vancouver PDT</timezone>
<roles>
<role>Software Architect</role>
<role>Software Developer</role>
</roles>
</developer>
</developers>
<organization>
<name>My Company</name>
</organization>
<distributionManagement>
<downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
<repository>
<uniqueVersion>false</uniqueVersion>
<id>nexus</id>
<name>My Company Release Repository</name>
<url>http://sonatype:8081/nexus/content/repositories/releases</url>
<layout>default</layout>
</repository>
<snapshotRepository>
<id>nexus</id>
<name>My Company Snapshot Repository</name>
<url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
<layout>default</layout>
</snapshotRepository>
</distributionManagement>
<build>
</build>
<repositories>
<repository>
<releases>
<updatePolicy>always</updatePolicy>
</releases>
<id>info.collide.mvn</id>
<name>Collide</name>
<url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
</repository>
<repository>
<id>thirdparty</id>
<name>3rd party</name>
<url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
</repository>
</repositories>
<dependencies>
</dependencies>
<reporting>
<plugins>
</plugins>
</reporting>
<dependencyManagement>
</dependencyManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

- - - - - - -

<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com</groupId>
<artifactId>my-company</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.my-company</groupId>
<artifactId>intersystem</artifactId>
<version>0.0.2-SNAPSHOT</version>
<packaging>pom</packaging>
<name>My Company Intersystem</name>
<description>Service layer for collaborative, distributed applications 
and services</description>
<licenses>
<license>
<name>My Company Intersystem</name>
<url>https://collaborate.my-company.com/sites/SoftwareStandardsAndGuidelines/Intersystem/default.aspx</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>10069959</id>
<name>Eric Kolotyluk</name>
<email>eric.kolotyluk@gmail.com</email>
<organization>My Company</organization>
<timezone>Vancouver PDT</timezone>
<roles>
<role>Software Architect</role>
<role>Software Developer</role>
<role>Intersystem Architect</role>
</roles>
</developer>
</developers>
<organization>
<name>My Company</name>
</organization>
<distributionManagement>
<downloadUrl>http://sonatype:8081/nexus/content/groups/public</downloadUrl>
<repository>
<uniqueVersion>false</uniqueVersion>
<id>nexus</id>
<name>My Company Release Repository</name>
<url>http://sonatype:8081/nexus/content/repositories/releases</url>
<layout>default</layout>
</repository>
<snapshotRepository>
<id>nexus</id>
<name>My Company Snapshot Repository</name>
<url>http://sonatype:8081/nexus/content/repositories/snapshots</url>
<layout>default</layout>
</snapshotRepository>
</distributionManagement>
<build>
</build>
<repositories>
<repository>
<releases>
<updatePolicy>always</updatePolicy>
</releases>
<id>info.collide.mvn</id>
<name>Collide</name>
<url>http://sonatype:8081/nexus/content/repositories/info.collide.mvn/</url>
</repository>
<repository>
<id>thirdparty</id>
<name>3rd party</name>
<url>http://sonatype:8081/nexus/content/repositories/thirdparty/</url>
</repository>
</repositories>
<dependencies>
</dependencies>
<reporting>
<plugins>
</plugins>
</reporting>
<dependencyManagement>
</dependencyManagement>
<properties>
<net.sf.jni4net.version>0.8.6.0</net.sf.jni4net.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<modules>
<module>platform.Java</module>
<module>platform.NET</module>
</modules>
</project>

On 2012-03-14 1:29 PM, Daivish Shah wrote:
> Hi Maven Team,
>
> I am trying to find out what is the best way to define company specific
> GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>
> Can some one provide me guideline on that ? Is that going to be profile or
> just simple POM.XML ? And how to inherit that. Please provide me guideline
> to implement it. As this is very critical before we implement all projects
> with MAVEN.
>
> Thanks,
> Daivish.
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Jörg Schaible <Jo...@scalaris.com>.
Hi,

Daivish Shah wrote:

> Hi,
> 
> What if we want to change the version of the corporate POM ?
> 
> At that time we have to change at all projects to use this ?

Basically yes, but we use meanwhile "x-SNAPSHOT" always in trunk. Therefore 
can all projects that are active in development and want to use the latest 
corporate POM use this version and they are not affected if the corporate 
POM is actually released.

> <parent>
>     <groupId>com.mosabuam.maven</groupId>
>     <artifactId>super-pom</artifactId>
>     <version>0.1</version>
> </parent>
> 
> We are at the starting stage of MAVEN implementation throughout the
> COMPANY so we expected to see lot of changes in this project.
> 
> What is the best practice on that too ? We have to select this project
> version as SNAPSHOT for all the time ?
> 
> 
> OR we have to use the RANGE ?

Actually we do not use it and did not have the need for them in the last 
years. The corporate POM defines also the versions of dependencies in a 
depMgmt section and therefore it controls also the version of the transitive 
deps.

[snip]

- Jörg


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Which is the BEST Approach to define Global POM.XML

Posted by Stephen Connolly <st...@gmail.com>.
Always depend on a release version

Keep in mind that the build must be reproducible, so old releases will
build with the parent that was most recent at the time they were released

mvn versions:update-parent

Is your friend

On Friday, 16 March 2012, Daivish Shah <da...@gmail.com> wrote:
> Hi,
>
> What if we want to change the version of the corporate POM ?
>
> At that time we have to change at all projects to use this ?
>
> <parent>
>    <groupId>com.mosabuam.maven</groupId>
>    <artifactId>super-pom</artifactId>
>    <version>0.1</version>
> </parent>
>
> We are at the starting stage of MAVEN implementation throughout the
COMPANY
> so we expected to see lot of changes in this project.
>
> What is the best practice on that too ? We have to select this project
> version as SNAPSHOT for all the time ?
>
>
> OR we have to use the RANGE ?
>
>
> Dependency Version Ranges
>
> Need to be able to declare minimum, maximum allowed versions of a
> dependency (both min and max may be optional), and allow "holes" for known
> incompatible versions.
>
> Proposed syntax:
>
> Range
>
> Meaning
>
> (,1.0]
>
> x <= 1.0
>
> 1.0
>
> "Soft" requirement on 1.0 (just a recommendation - helps select the
correct
> version if it matches all ranges)
>
> [1.0]
>
> Hard requirement on 1.0
>
> [1.2,1.3]
>
> 1.2 <= x <= 1.3
>
> [1.0,2.0)
>
> 1.0 <= x < 2.0
>
> [1.5,)
>
> x >= 1.5
>
> (,1.0],[1.2,)
>
> x <= 1.0 or x >= 1.2. Multiple sets are comma-separated
>
> (,1.1),(1.1,)
>
> This excludes 1.1 if it is known not to work in combination with this
> library
>
> Mathematical syntax chosen to avoid the use of - as it would conflict with
> what is used in many version number, and because < and >= doesn't look
nice
> in XML. (,1.0] is used because infinity is not really helpful here.
>
> Default strategy: Of the overlapping ranges, the highest soft requirement
> is the version to be used. If there are no soft requirements inside the
> prescribed ranges, the most recent version is used. If that does not fit
> the described ranges, then the most recent version number in the
prescribed
> ranges is used. If the ranges exclude all versions, an error occurs.
>
> Addition of ranges leads to additional necessary specifications on the
> dependency element.
>
>
>
> Looking for correct Approach on this.
>
>
> thanks,
> daivish.
>
> On Thu, Mar 15, 2012 at 12:47 PM, Marcin Kuthan <marcin.kuthan@gmail.com
>wrote:
>
>> I hope this example helps:
>>
>>
>>
http://code.google.com/p/m4enterprise/source/browse/trunk/corporate-pom/pom.xml
>>
>> Marcin
>>
>> On 14 March 2012 21:29, Daivish Shah <da...@gmail.com> wrote:
>>
>> > Hi Maven Team,
>> >
>> > I am trying to find out what is the best way to define company specific
>> > GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>> >
>> > Can some one provide me guideline on that ? Is that going to be profile
>> or
>> > just simple POM.XML ? And how to inherit that. Please provide me
>> guideline
>> > to implement it. As this is very critical before we implement all
>> projects
>> > with MAVEN.
>> >
>> > Thanks,
>> > Daivish.
>> >
>>
>

Re: Which is the BEST Approach to define Global POM.XML

Posted by Daivish Shah <da...@gmail.com>.
Hi,

What if we want to change the version of the corporate POM ?

At that time we have to change at all projects to use this ?

<parent>
    <groupId>com.mosabuam.maven</groupId>
    <artifactId>super-pom</artifactId>
    <version>0.1</version>
</parent>

We are at the starting stage of MAVEN implementation throughout the COMPANY
so we expected to see lot of changes in this project.

What is the best practice on that too ? We have to select this project
version as SNAPSHOT for all the time ?


OR we have to use the RANGE ?


Dependency Version Ranges

Need to be able to declare minimum, maximum allowed versions of a
dependency (both min and max may be optional), and allow "holes" for known
incompatible versions.

Proposed syntax:

Range

Meaning

(,1.0]

x <= 1.0

1.0

"Soft" requirement on 1.0 (just a recommendation - helps select the correct
version if it matches all ranges)

[1.0]

Hard requirement on 1.0

[1.2,1.3]

1.2 <= x <= 1.3

[1.0,2.0)

1.0 <= x < 2.0

[1.5,)

x >= 1.5

(,1.0],[1.2,)

x <= 1.0 or x >= 1.2. Multiple sets are comma-separated

(,1.1),(1.1,)

This excludes 1.1 if it is known not to work in combination with this
library

Mathematical syntax chosen to avoid the use of - as it would conflict with
what is used in many version number, and because < and >= doesn't look nice
in XML. (,1.0] is used because infinity is not really helpful here.

Default strategy: Of the overlapping ranges, the highest soft requirement
is the version to be used. If there are no soft requirements inside the
prescribed ranges, the most recent version is used. If that does not fit
the described ranges, then the most recent version number in the prescribed
ranges is used. If the ranges exclude all versions, an error occurs.

Addition of ranges leads to additional necessary specifications on the
dependency element.



Looking for correct Approach on this.


thanks,
daivish.

On Thu, Mar 15, 2012 at 12:47 PM, Marcin Kuthan <ma...@gmail.com>wrote:

> I hope this example helps:
>
>
> http://code.google.com/p/m4enterprise/source/browse/trunk/corporate-pom/pom.xml
>
> Marcin
>
> On 14 March 2012 21:29, Daivish Shah <da...@gmail.com> wrote:
>
> > Hi Maven Team,
> >
> > I am trying to find out what is the best way to define company specific
> > GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
> >
> > Can some one provide me guideline on that ? Is that going to be profile
> or
> > just simple POM.XML ? And how to inherit that. Please provide me
> guideline
> > to implement it. As this is very critical before we implement all
> projects
> > with MAVEN.
> >
> > Thanks,
> > Daivish.
> >
>

Re: Which is the BEST Approach to define Global POM.XML

Posted by Marcin Kuthan <ma...@gmail.com>.
I hope this example helps:

http://code.google.com/p/m4enterprise/source/browse/trunk/corporate-pom/pom.xml

Marcin

On 14 March 2012 21:29, Daivish Shah <da...@gmail.com> wrote:

> Hi Maven Team,
>
> I am trying to find out what is the best way to define company specific
> GLOBAL POM.XML. Which each team can inherit it in EACH Projects.
>
> Can some one provide me guideline on that ? Is that going to be profile or
> just simple POM.XML ? And how to inherit that. Please provide me guideline
> to implement it. As this is very critical before we implement all projects
> with MAVEN.
>
> Thanks,
> Daivish.
>