Proposal about James modules merge
Hi all, For some months, Antoine Duprat, Benoit Tellier and myself are working daily on James 3. We tried hard to make our development workflow as simple as possible. One thing that's very annoying right now is that James is composed of several git repositories. We tried to use git submodule to aggregate all James modules into a parent project. You can see it by yourself here : https://github.com/linagora/james-parent Everything would be ok if James were mature enough to make changes in a single repository for most fixes and improvements. Our experience is that we almost always change several repositories for a task : adding a test to MPT tests often leads to some fixes in other modules, adding an implementation for an interface requires some spring configuration in the main repository, even a maven dependency in a given repository often breaks other modules when putting everything together. With the current layout, our workflow contains some tricky tasks : x to create a global branch, we create a branch for every repository, a branch for james-parent, then we have to commit everything for james-parent to point to the right version of submodules. x for every single commit, we need to commit james-parent too in order to follow submodule revision x We need several Pull-Requests for a single task, that makes it hard to reason about changes and it must be applied in the right order x Branch merging is painful too While discussing in JIRA (https://issues.apache.org/jira/browse/JAMES-1588), Eric asked me to come with a proposal about merging some James repositories together and ask for feedback about Pros and Cons. To start, here is the repositories needed to build James : jdkim jsieve jspf mime4j james-project james mailbox mailet mpt protocols The first four are specialized modules and don't need to change with James development IMO, so they can live in their own git repository. The other 6 (7 if you count the JIRA-1588 proposed backends repository) are very tied together and could be merged into a single git repository with the following tree : james-project | james | mailbox | mailet | mpt | protocols | backends We should then make it clear on the website what is a library (jdkim, jsieve, jspf, mime4j) dependency and what is a server module (everything else). Here is my opinions about this new organization : Pro : + Faster dev for cross-module developments + Merge integration testing (MPT) to the main repository + Less build ordering issues when merging changes in two modules + Easier Getting Start (git clone, mvn compile) + Easier Tagging/Release Con : - Slower mvn package - Every modules have to evolve accordingly to prevent build failure Feel free to add your opinion to this proposal. -- Matthieu Baechler - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1697450 - /james/mpt/trunk/impl/imap-mailbox/cassandra/pom.xml
Author: btellier Date: Mon Aug 24 16:25:42 2015 New Revision: 1697450 URL: http://svn.apache.org/r1697450 Log: MPT-21 Cassandra module should be disable when Java version lesser than 8 - contributed by Antoine Duprat Modified: james/mpt/trunk/impl/imap-mailbox/cassandra/pom.xml Modified: james/mpt/trunk/impl/imap-mailbox/cassandra/pom.xml URL: http://svn.apache.org/viewvc/james/mpt/trunk/impl/imap-mailbox/cassandra/pom.xml?rev=1697450r1=1697449r2=1697450view=diff == --- james/mpt/trunk/impl/imap-mailbox/cassandra/pom.xml (original) +++ james/mpt/trunk/impl/imap-mailbox/cassandra/pom.xml Mon Aug 24 16:25:42 2015 @@ -54,5 +54,167 @@ scopetest/scope /dependency /dependencies + +profiles +profile +idnoTest/id +activation +os +familywindows/family +/os +/activation +build +plugins +plugin +groupIdorg.apache.maven.plugins/groupId +artifactIdmaven-surefire-plugin/artifactId +configuration +skipTeststrue/skipTests +/configuration +/plugin +/plugins +/build +/profile +profile +iddisable-build-for-older-jdk/id +activation +jdk(,1.8)/jdk +/activation +build +plugins +plugin +artifactIdmaven-jar-plugin/artifactId +executions +execution +iddefault-jar/id +phasenone/phase +/execution +execution +idjar/id +phasenone/phase +/execution +execution +idtest-jar/id +phasenone/phase +/execution +/executions +/plugin +plugin +artifactIdmaven-compiler-plugin/artifactId +executions +execution +iddefault-compile/id +phasenone/phase +/execution +execution +iddefault-testCompile/id +phasenone/phase +/execution +/executions +/plugin +plugin +artifactIdmaven-surefire-plugin/artifactId +executions +execution +iddefault-test/id +phasenone/phase +/execution +/executions +/plugin +plugin +artifactIdmaven-source-plugin/artifactId +executions +execution +idattach-sources/id +phasenone/phase +/execution +/executions +/plugin +plugin +artifactIdmaven-install-plugin/artifactId +executions +execution +iddefault-install/id +phasenone/phase +/execution +/executions +/plugin +plugin +artifactIdmaven-resources-plugin/artifactId +executions +execution +iddefault-resources/id +phasenone/phase +/execution +execution +iddefault-testResources/id +phasenone/phase +/execution +/executions +/plugin +plugin +artifactIdmaven-site-plugin/artifactId +executions +execution +idattach-descriptor/id +phasenone/phase +/execution +/executions +/plugin +/plugins +
svn commit: r1697452 - in /james/mpt/trunk: app/dependency-reduced-pom.xml app/pom.xml core/pom.xml mavenplugin/pom.xml
Author: btellier Date: Mon Aug 24 16:26:27 2015 New Revision: 1697452 URL: http://svn.apache.org/r1697452 Log: MPT-21 Don't use Xdoclint when Java version lesser than 8 - contributed by Antoine Duprat Modified: james/mpt/trunk/app/dependency-reduced-pom.xml james/mpt/trunk/app/pom.xml james/mpt/trunk/core/pom.xml james/mpt/trunk/mavenplugin/pom.xml Modified: james/mpt/trunk/app/dependency-reduced-pom.xml URL: http://svn.apache.org/viewvc/james/mpt/trunk/app/dependency-reduced-pom.xml?rev=1697452r1=1697451r2=1697452view=diff == --- james/mpt/trunk/app/dependency-reduced-pom.xml (original) +++ james/mpt/trunk/app/dependency-reduced-pom.xml Mon Aug 24 16:26:27 2015 @@ -70,12 +70,24 @@ interfaces to the MPT library./descript /goals /execution /executions -configuration - additionalparam-Xdoclint:none/additionalparam -/configuration /plugin /plugins /build + profiles +profile + iddoclint-java8-disable/id + build +plugins + plugin +artifactIdmaven-javadoc-plugin/artifactId +configuration + additionalparam-Xdoclint:none/additionalparam +/configuration + /plugin +/plugins + /build +/profile + /profiles dependencies dependency groupIdorg.apache.james/groupId Modified: james/mpt/trunk/app/pom.xml URL: http://svn.apache.org/viewvc/james/mpt/trunk/app/pom.xml?rev=1697452r1=1697451r2=1697452view=diff == --- james/mpt/trunk/app/pom.xml (original) +++ james/mpt/trunk/app/pom.xml Mon Aug 24 16:26:27 2015 @@ -133,10 +133,27 @@ interfaces to the MPT library./descript /goals /execution /executions -configuration -additionalparam-Xdoclint:none/additionalparam -/configuration /plugin /plugins /build + +profiles +profile +iddoclint-java8-disable/id +activation +jdk[1.8,)/jdk +/activation +build +plugins +plugin +groupIdorg.apache.maven.plugins/groupId +artifactIdmaven-javadoc-plugin/artifactId +configuration +additionalparam-Xdoclint:none/additionalparam +/configuration +/plugin +/plugins +/build +/profile +/profiles /project Modified: james/mpt/trunk/core/pom.xml URL: http://svn.apache.org/viewvc/james/mpt/trunk/core/pom.xml?rev=1697452r1=1697451r2=1697452view=diff == --- james/mpt/trunk/core/pom.xml (original) +++ james/mpt/trunk/core/pom.xml Mon Aug 24 16:26:27 2015 @@ -154,10 +154,27 @@ /goals /execution /executions -configuration -additionalparam-Xdoclint:none/additionalparam -/configuration /plugin /plugins /build + +profiles + profile +iddoclint-java8-disable/id +activation +jdk[1.8,)/jdk +/activation +build +plugins +plugin +groupIdorg.apache.maven.plugins/groupId +artifactIdmaven-javadoc-plugin/artifactId +configuration +additionalparam-Xdoclint:none/additionalparam +/configuration +/plugin +/plugins +/build +/profile +/profiles /project Modified: james/mpt/trunk/mavenplugin/pom.xml URL: http://svn.apache.org/viewvc/james/mpt/trunk/mavenplugin/pom.xml?rev=1697452r1=1697451r2=1697452view=diff == --- james/mpt/trunk/mavenplugin/pom.xml (original) +++ james/mpt/trunk/mavenplugin/pom.xml Mon Aug 24 16:26:27 2015 @@ -133,9 +133,6 @@ to the library requiring no extra coding /goals /execution /executions -configuration -additionalparam-Xdoclint:none/additionalparam -/configuration /plugin !-- plugin @@ -203,5 +200,22 @@ to the library requiring no extra coding /pluginManagement /build /profile +profile +iddoclint-java8-disable/id +activation +jdk[1.8,)/jdk +/activation +build +
[jira] [Commented] (MPT-21) Fix MPT compilation with Java 6
[ https://issues.apache.org/jira/browse/MPT-21?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14709565#comment-14709565 ] Tellier Benoit commented on MPT-21: --- PR merged. Patch was contributed by Antoine Duprat. Fix MPT compilation with Java 6 --- Key: MPT-21 URL: https://issues.apache.org/jira/browse/MPT-21 Project: James MPT Issue Type: Bug Reporter: Antoine Duprat Labels: compile MPT compilation is broken on Java version lesser than 8 {code} [INFO] [INFO] Reactor Summary: [INFO] [INFO] Apache James MPT .. SUCCESS [2.179s] [INFO] Apache James MPT Core . FAILURE [6.703s] [INFO] Apache James MPT AntLib ... SKIPPED [INFO] Apache James MPT Application .. SKIPPED [INFO] Apache James MPT All .. SKIPPED [INFO] Apache James MPT Imap Mailbox . SKIPPED [INFO] Apache James MPT Imap Mailbox Core SKIPPED [INFO] Apache James MPT Imap Mailbox - Cassandra . SKIPPED [INFO] Apache James MPT Imap Mailbox - Cyrus . SKIPPED [INFO] Apache James MPT Imap Mailbox - ElasticSearch . SKIPPED [INFO] Apache James MPT Imap Mailbox - External James SKIPPED [INFO] Apache James MPT Imap Mailbox - HBase . SKIPPED [INFO] Apache James MPT Imap Mailbox - InMemory .. SKIPPED [INFO] Apache James MPT Imap Mailbox - JCR ... SKIPPED [INFO] Apache James MPT Imap Mailbox - JPA ... SKIPPED [INFO] Apache James MPT Imap Mailbox - Maildir ... SKIPPED [INFO] Apache James MPT Maven2 Plugin SKIPPED [INFO] [INFO] BUILD FAILURE [INFO] [INFO] Total time: 10.599s [INFO] Finished at: Mon Jul 27 11:35:43 CEST 2015 [INFO] Final Memory: 37M/685M [INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9:javadoc (create-javadocs) on project apache-james-mpt-core: An error has occurred in JavaDocs report generation: [ERROR] Exit code: 1 - javadoc: error - invalid flag: -Xdoclint:none [ERROR] [ERROR] Command line was: /usr/lib/jvm/java-6-openjdk-amd64/jre/../bin/javadoc -J-Xmx1024m -J-Xms256m @options @packages [ERROR] [ERROR] Refer to the generated Javadoc files in '/home/aduprat/open-paas/james/james-parent/modules/mpt/core/target/site/apidocs' dir. [ERROR] - [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR] mvn goals -rf :apache-james-mpt-core {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
Re: Proposal about James modules merge
Hi, Yes, the work flow is not the best with SVN. There is an option to migrate James to git hosting and personally I think it will be a good thing. In order to make this a reality we have to raise a vote and raise a JIRA issue to Apache Infra. The vote has to run for 72h. You have my +1. p.s. One thing to have in mind is that we need to we need to take care of the site publishing also. But it's doable. Regards, signature.asc Description: OpenPGP digital signature