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 <[email protected]> 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<[email protected]> >> 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>[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</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>[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</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: [email protected] >>> For additional commands, e-mail: [email protected] >>> >> --------------------------------------------------------------------- >> 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] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
