We are about to release G-Reg 5.0.0 M3 pack but found an issue when releasing a milestone version. Let me take G-Reg as an example, G-Reg 5.0.0-M3 version is depends on carbon-governance SNAPSHOT version and that is a legitimate use as well ( As G-Reg 5.0.0-M3 version, we actually release some of the completed features of carbon-governance/carbon-registry repos.) but Maven release plug-in does not support to release any project with SNAPSHOT dependencies [1] [4], so we have 2 options to solve this issue.
*1. ) Modify Maven release plug-in to allow SNAPSHOT dependencies.* Pros --------- - Fix is relatively straightforward, we just have to remove validation in code and allow SNAPSHOT dependencies. - No change to release process. Cons --------- - We have to fork and maintain Maven release plug-in locally and will lose new changes from Apache. - If we consider G-Reg-5.0.0-M3 pack, technically it's a milestone version not a snapshot version so as a principle 'creation process of the pack' should be repeatable but if we allow SNAPSHOT dependencies inside product packs 'creation process of the pack' is not repeatable. This is not something standard, if we decided to go with this approach at least we should not call them as milestone packs instead SNAPSHOT packs (like nightly builds) e.g - G-Reg-5.0.0-SNAPSHOT-08-03-15 pack etc. *2.) Instead of SNAPSHOT dependencies, first release own dependencies with M-'X' (e.g - carbon-governance-4.4.0-M1 ) and then use these released versions within the milestone product pack. * Example - G-Reg 5.0.0-M3 pack can have carbon-governance-4.4.0-M2 and carbon-registry-4.3.2-M5 but NOT carbon-identity-4.3.1-M2 Pros --------- - Again relatively straightforward, we don't need to fork and maintain Maven release plug-in. - AFAIK adding post-fix to distinguish Milestone, Alpha, Beta versions is a standard practise [2] , [3] hence end users already aware not to use milestone versions in production. Cons --------- - There is a chance that other teams can use M-X packs in there milestone releases, we need a proper governance and disciplines not to do that (e.g - carbon-governance-4.4.0-M1 should be only use by G-Reg team within WSO2 other than special permissions) WDYT ? [1] - http://maven.apache.org/maven-release/maven-release-plugin/examples/prepare-release.html [2] - Spring releases - http://repo1.maven.org/maven2/org/springframework/spring-core/ [3] - Hibernate releases - http://repo1.maven.org/maven2/org/hibernate/hibernate-search/ [4] - When I tied for above, build was stopped with following error. [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.1:prepare (default-cli) on project carbon-governance: Can't release project due to non released dependencies : [ERROR] org.wso2.carbon.registry:org.wso2.carbon.registry.admin.api:jar:4.3.1-SNAPSHOT:compile [ERROR] org.wso2.carbon.registry:org.wso2.carbon.registry.common:jar:4.3.1-SNAPSHOT:compile [ERROR] org.wso2.carbon.registry:org.wso2.carbon.registry.extensions:jar:4.3.1-SNAPSHOT:compile [ERROR] org.wso2.carbon.registry:org.wso2.carbon.registry.indexing:jar:4.3.1-SNAPSHOT:compile [ERROR] in project 'WSO2 Carbon - Governance' (org.wso2.carbon.governance:org.wso2.carbon.governance.api:bundle:4.3.1-SNAPSHOT) 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
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture