Please find POM restructuring guidelines in addition to things we discussed
during today's meeting.
1. Top level POM file is the 'parent POM' for your project and there is no
real requirement to have separate Maven module to host parent POM file.
2. Eliminate POM files available on 'component' , 'service-stub' and
'features' directories as there is no gain from them instead directly call
real Maven modules from parent pom file ( REF - [1] )
e.g -
<modules>
<module>service-stubs/service-mgt</module>
<module>service-stubs/webapp-mgt</module>
<module>components/service-mgt</module>
<module>components/webapp-mgt</module>
<module>features/as-runtimes</module>
<module>features/service-mgt</module>
<module>features/webapp-mgt</module>
</modules>
[ You can keep same directory structure to enhance human readability ]
3. You must have a <dependencyManagement> section on parent POM and
should define all your project dependencies along with versions. ( REF -
[1] )
5. You CAN'T have <dependencyManagement> sections on any other POM file
other than parent POM.
6. In each submodule make sure you have Maven dependencies WITHOUT versions
( REF - [2] )
e.g - <dependency>
<groupId>org.apache.axis2.wso2</groupId>
<artifactId>axis2</artifactId>
</dependency>
When you introduce a new Maven dependency define it's version under
<dependencyManagement>
section of parent POM file.
7. Make sure you have defined following repositories and plugin
repositories on parent POM file. These will be used to drag SNAPSHOT
versions of other carbon projects which used as dependencies of your
project.
<repositories>
<repository>
<id>wso2-nexus</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>wso2.releases</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>wso2.snapshots</id>
<name>Apache Snapshot Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>wso2.releases</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</pluginRepository>
<pluginRepository>
<id>wso2.snapshots</id>
<name>Apache Snapshot Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
<pluginRepository>
<id>wso2-nexus</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</pluginRepository>
</pluginRepositories>
8. Make sure you have defined distribution management section as follows
on your parent POM file. Jenkins will use these details to deploy your
project's SNAPSHOT artefacts into Nexus so that others can use your
components without building locally.
<distributionManagement>
<repository>
<id>wso2.releases</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>wso2.snapshots</id>
<name>Apache Snapshot Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
Please use carbon-deployment[3] as a reference project. Eranda/Geeth
please add if I missed anything.
[1] - https://github.com/wso2/carbon-deployment/blob/master/pom.xml
[2] -
https://github.com/wso2/carbon-deployment/blob/master/components/webapp-mgt/org.wso2.carbon.webapp.mgt.ui/pom.xml
[3] - https://github.com/wso2/carbon-deployment/
Thanks !
--
Sagara Gunathunga
Senior Technical Lead; WSO2, Inc.; http://wso2.com
V.P Apache Web Services; http://ws.apache.org/
Linkedin; http://www.linkedin.com/in/ssagara
Blog ; http://ssagara.blogspot.com
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev