Building Opencms 9.5.x from the sources

(Difference between revisions)
Jump to: navigation, search
(Add instructions for patching alkacon-oamp)
(No need for note 5 (error when using Cradle 2.0+))
Line 48: Line 48:
 
Additionally, if you are using Gradle >= 2.0, you'll need the patch:
 
Additionally, if you are using Gradle >= 2.0, you'll need the patch:
  
* [https://github.com/alkacon/alkacon-oamp/pull/30 #30]
+
* [https://github.com/alkacon/alkacon-oamp/pull/30 #30] (See also the thread [http://opencms.996256.n3.nabble.com/OpenCms-9-0-1-ready-for-download-tp23958p24010.html OpenCms 9.0.1 ready for download])
  
 
And finally, if you are using Java 8, you'll also need patch:
 
And finally, if you are using Java 8, you'll also need patch:
Line 61: Line 61:
  
  
=== Execute the gradle <tt>bindist</tt> task<sup>5</sup> ===
+
=== Execute the gradle <tt>bindist</tt> task ===
  
 
<source lang="bash">gradle bindist</source>
 
<source lang="bash">gradle bindist</source>
Line 142: Line 142:
 
  [...]
 
  [...]
 
|}
 
|}
 
5. Currently, gradle >=2.0 fails with the following message:
 
 
> DOCTYPE is disallowed when the feature "<nowiki>http://apache.org/xml/features/disallow-doctype-decl</nowiki>" set to true.
 
 
I have written a pull-request to fix this bug: https://github.com/alkacon/alkacon-oamp/pull/30. See also http://opencms.996256.n3.nabble.com/OpenCms-9-0-1-ready-for-download-tp23958p24010.html
 
  
  
 
[[Category:Developing in OpenCms]]
 
[[Category:Developing in OpenCms]]

Revision as of 08:40, 7 October 2014

Note: this is work in progress

Contents

Building opencms-core

Note: This build process has been tested using Java 7 and Gradle 1.8.

Checkout the sources of the 9_5_x branch1, 2

git clone https://github.com/alkacon/opencms-core.git -b branch_9_5_x

After checkout, cd into the new directory

cd opencms-core

Adjust if necessary the versioning configuration

Edit the file opencms/src/org/opencms/main/version.properties or edit and execute the script create_version_properties.sh

Execute the gradle bindist task

gradle bindist
Tip for developers: Gwt generates code for all the possible permutations of the supported languages and browsers. This compilation takes a significant part of the complete build time. During development builds you could find useful to generate the corresponding gwt code only for a language and a browser restricting the value of the properties locale and user.agent to only one value in the file opencms-core/src-gwt/org/opencms/GwtBase.gwt.xml.

Once this task is finished, you should have (among others) a distributions directory under your (in the property build_directory of the file gradle.properties) configured build directory, containing the distributable opencms-[version].zip and the deployable opencms.war.

If you want to also build the opencms oamp, v8 or v7 modules, you also need to install in your local maven repository the corresponding jars3, 4

gradle install

Building alkacom-oamp

Checkout the sources of the 9_5_x branch

git clone https://github.com/alkacon/alkacon-oamp.git -b branch_9_5_x

After checkout, cd into the new directory

cd alkacon-oamp


Patch the code

Unfortunatelly, the current sources (as for 2014-10-07) do not compile. Until Alkacon fixes them, I have written a few patches as workarounds:

Additionally, if you are using Gradle >= 2.0, you'll need the patch:

And finally, if you are using Java 8, you'll also need patch:

To apply the patches, fetch them and merge them into your working branch. For example, to apply patch 32:

git fetch origin pull/32/head:patch-32
git merge patch-32


Execute the gradle bindist task

gradle bindist

Notes

1. Checking out the build tagged build_9_0_1 and executing gradle fails with the following message:

> Could not find property 'distribution' on configuration ':compile'.

2. In the branch build_9_0_x this issue is fixed, but there is still an ISO encoded file test/org/opencms/search/extractors/TestMsPowerPointExtraction.java that breaks the javadocs:

[...]
:javadocTest
/home/myuser/src/opencms-9.0.x/opencms-core/test/org/opencms/search/extractors/TestMsPowerPointExtraction.java:93: error: unmappable character for encoding UTF8
        // this is "�������"
                    ^
/home/myuser/src/opencms-9.0.x/opencms-core/test/org/opencms/search/extractors/TestMsPowerPointExtraction.java:93: error: unmappable character for encoding UTF8
       // this is "�������"
                    ^
[...]
14 errors
:javadocTest FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':javadocTest'.
> Javadoc generation failed.

The commit https://github.com/alkacon/opencms-core/commit/89e10779f43cd8bcc31f7db9d60193a89994c948 fixes the encoding, but it hasn't made it yet into branch_9_0_x.


3. The current javadocs are broken and when using Java 8+, gradle fails with the following message:

[...]
100 errors
100 warnings
:javadoc FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':javadoc'.
[...]

I have written a pull-request to work around this issue: https://github.com/alkacon/opencms-core/pull/278

4. You need to match the version of the generated opencms-core artifacts to the version of the alkacon-oamp dependencies. Since commit 89e10779f43cd8bcc31f7db9d60193a89994c948 (from 2014-04.02, already in 9_5_x), the property version.number in the file opencms-core/src/org/opencms/main/version.properties defines the versions of the opencms-core artifacts. The property opencms_version of the file alkacon-oamp/gradle.properties declares the version of the dependencies:

opencms-core/src/org/opencms/main/version.properties alkacon-oamp/gradle.properties
# Static version information file
#
# You should set this to something meaningful before you build.
version.number=9.5.x
version.id=Manual build
build.number=(not set)
build.date=(not set)
nicename.build.number=Build Number
nicename.build.date=Build Date
# This has no nice name on purpose (for test cases)
build.info=Static version file
build_directory=../../BuildOAMP
opencms_version=9.5.x
java_target_version=1.6
max_heap_size=1024m

# all available modules
modules_oamp_all=\
com.alkacon.opencms.commons,\
com.alkacon.opencms.calendar,\
com.alkacon.opencms.documentcenter,\
[...]
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox