Gang,

I have been discussing a lot with the Gradle devs about "recommended
project" structure, and they (Peter and Hans) have provided a lot of
feedback on how various set ups can be realized.

After some more testing and consideration of the "Git Submodules"
feature, I would like to propose that a "unified view" of Qi4j is
created. It helps the build system (esp versioning) a lot. So;

* Qi4j Core, Libraries and Extensions remain as separate GitHub
repositories, authorization reasons (unless we want to go with a
social contract instead).

* Qi4j Sandbox also remains as separate GitHub repo, mainly to keep it
out of view.

* Remaining sources are collapsed into the Qi4j SDK repository, which
will be accessible by 'anyone'.

* Current qi4j-tests will be re-organized for regression, integration
and performance tests.

The dev work will be slightly 'cumbersome' due to the "Git submodule"
issue that I meantioned a few days ago.

 1. Checking out the Qi4j SDK.
 2. Run "git submodule update". This should only be needed once.
 3. If working on 'core', 'libraries' and/or 'extensions; do a 'git
checkout develop' in that directory.
 4. After committing/pushing any of the above, must do "git add core",
"git add libraries" and "git add extensions" respectively in the SDK
level directory. Then commit/push the SDK.

(Edward; Is there anything I forgot to mention?)

Other notes on Gradle;

 * Gradle will build either from root or from 'current dir'. In the
latter, it will also build anything that has changed elsewhere, that
the 'current dir' depends on.

 * There is no need to install Gradle, if you are Ok with running
./gradlew from project root.

 * The way I am setting up Gradle, it is executing a single phase for
all projects before going to next phase. Meaning all compiles will
happen before any test compiles which are before any test execution.
This can probably open up the possibility to have "testRuntime"
dependencies on 'unaccepted' artifacts, for instance a library needing
an extension during tests. I have not checked if this actually works.


Other notes;

 * I will let Gradle look inside the dev-status.xml to determine if a
module is ready for release. 'beta' would be the minimum, and perhaps
place it in a 'lib/beta/' folder in the SDK to make that clear.

 * All modules will be published as Maven artifacts to OPS4J's
repository. I think a couple of artifacts will end up with different
group/artifact names, since this build system I am creating is purely
algorithmic (to keep the build sources small) and in Maven it is
manually maintained and there are some discrepancies...


There are probably heaps of other things I should mention...


Cheers
-- 
Niclas Hedhman, Software Developer
http://www.qi4j.org - New Energy for Java

I live here; http://tinyurl.com/3xugrbk
I work here; http://tinyurl.com/24svnvk
I relax here; http://tinyurl.com/2cgsug

_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to