[ 
https://issues.apache.org/jira/browse/DERBY-6645?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16725979#comment-16725979
 ] 

Rick Hillegas commented on DERBY-6645:
--------------------------------------

The existing maven logic in trunk/maven2 is only used to publish release 
artifacts to the maven repositories. Most developers never touch it. Only 
release managers do. Instructions for operating it can be found in the cookbook 
for release publication at https://wiki.apache.org/db-derby/ReleasePublication.

The build targets for message management accomplish the following goals:

1) Messages and their localizations should be packaged inside the modules which 
raise those messages. However, the tools module violates this pattern for 
reasons which I don't understand. That logic pre-dates my involvement with 
Derby. The English tools messages are packaged inside the tools module but the 
non-English localizations for those messages live inside the locale-specific 
jars. Client messages and their localizations are packaged inside 
derbyclient.jar. Server messages and their localizations are packaged inside 
derbynet.jar.

2) The engine messages are split up into many smaller files. There are a lot of 
engine messages and this extra complexity is supposed to prevent the engine 
from faulting in unnecessary message strings and thereby consuming too much 
memory. In an effort to reduce the static footprint of the engine jar, the 
localizations for engine messages were separated out into separate jar files, 
one for each supported locale. As noted above, for some reason the 
localizations for tools messages managed to leak into those jar files. Message 
splitting is accomplished by the 
trunk/java/build/org/apache/derbyBuild/splitmessages.java build tool, which is 
invoked by the oddball 
trunk/java/org.apache.derby.engine/org/apache/derby/loc/build.xml script as 
part of building the engine module.

3) We generate user documentation for the engine messages. The following 
Reference Guide page is generated by the Derby build: 
http://db.apache.org/derby/docs/10.14/ref/rrefexcept71493.html. The source for 
the english engine messages lives in 
trunk/java/org.apache.derby.engine/org/apache/derby/loc/messages.xml alongside 
extra information needed to document them. This file is consumed by the 
trunk/java/build/org/apache/derbyBuild/MessageBuilder.java build tool. That 
tool generates 
trunk/generated/java/org.apache.derby.engine/org/apache/derby/loc/messages_en.properties,
 the input file to step (2) above. The MessageBuilder tool also generates the 
dita source for the Reference Guide page.


> Switch to Maven for building Apache Derby
> -----------------------------------------
>
>                 Key: DERBY-6645
>                 URL: https://issues.apache.org/jira/browse/DERBY-6645
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions: 10.10.2.0
>            Reporter: Moritz Hoffmann
>            Priority: Major
>         Attachments: DERBY-6645_v1.patch
>
>
> For a new user building Derby is very hard. It does not follow established 
> Java project structures and requires a lot of prior knowledge. Also the 
> documentation is rather short. Especially running the tests is non-intuitive 
> at the beginning. Thus, I propose that Derby switches to building using Maven 
> and restructures its components in a cleaner way. Testing should be revised 
> to produce reproducible results. This would make development and testing much 
> easier and more user-friendly.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to