Got it. Thanks. -----Original Message----- From: Eric Kolotyluk [mailto:[email protected]] 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:[email protected]] > Sent: March-14-12 2:22 PM > To: [email protected] > 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>[email protected]</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>[email protected]</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: [email protected] > For additional commands, e-mail: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
