对ADempiere源码的一些理解

1. ADempiere源码使用ant处理,所以很多子目录下都有一个build.xml文件。

2. 子目录下RUN_build.bat或者RUN_build.sh类似的文件只是ant的快捷调用方式。进过测试:直接使用ant xxx也是OK的。

3. 所有的build.xml共享同一个配置文件utils_dev\build.properties,可以根据自己情况自定修改该文件调整。

env.ADEMPIERE_SOURCE=${adempiere.base}
env.ADEMPIERE_ROOT=${env.ADEMPIERE_SOURCE}/adempiere
env.ADEMPIERE_HOME=${env.ADEMPIERE_ROOT}/Adempiere
env.ADEMPIERE_INSTALL=${env.ADEMPIERE_SOURCE}/adempiere/install
env.ADEMPIERE_VERSION=ADempiere
env.ADEMPIERE_VERSION_FILE=360LTS
env.ADEMPIERE_VENDOR=ADempiere
env.ENCODING=UTF-8
env.XDOCLET_HOME=${env.ADEMPIERE_SOURCE}/tools
env.ADEMPIERE_ENV=Y

4. ant install完成以后生产的文件在ADEMPIERE_HOME目录,压缩档在ADEMPIERE_INSTALL目录(zip和tar.gz两种格式)。这里的安装只是ADempiere将必要的一些文件复制到ADEMPIERE_HOME目录,要能够使用还需要执行RUN_setup.bat等一系列的动作。实质上就是生成安装文件,同网络上下载回来的一样。

tools子项目

该子项目会生产几个ADempiere共用的jar文件。

服务器jar文件:

/lib/jboss.jar (ADempiere习惯将多个jar文件打包成一个jar文件,下面缩进的内容表示该目的jar文件的内容来源)
    /jboss/client/jboss-ejb3x.jar
    /jboss/client/jboss-ejb3-client.jar
    /jboss/client/jbossall-client.jar

/lib/glassfish.jar
    /glassfishfacet/lib/*.jar
    /tools/lib/javaee.jar

数据库jar文件:

/lib/oracle.jar
    /tools/lib/ojdbc6.jar
    
/lib/postgresql.jar
  /tools/lib/postgresql.jar

CSTools.jar,原文是Build Server Jar,我理解为Compiere Server Tools,因为ADempiere是基于Compiere,所以ADempiere里面包含了很多Compiere的代码:

/lib/CSTools.jar
    /tools/META-INF/services/**
    <!-- JSTL -->
    /tools/lib/jstl.jar
    /tools/lib/standard.jar
    <!-- ECS -->
    /tools/src/**/apache/ecs/**
    <!-- Installing Script Based in JSR 223 Scripting APIs -->
    /tools/lib/script-api.jar
    <!-- BeanShell -->
    /tools/lib/bsh-2.0b5.jar
    /tools/lib/bsh-engine.jar
    <!-- Groovy -->
    /tools/lib/groovy-all-1.5.1.jar
    /tools/lib/groovy-engine.jar
    <!-- Groovy -->
    /tools/lib/jython.jar
    /tools/lib/jython-engine.jar
    <!-- Payment Processors    -->
    /tools/lib/Verisign.jar
    /tools/lib/payflow.jar
    /tools/lib/miglayout-3.7.1-swing.jar
    /tools/lib/jpayment.jar
    <!-- Log4J, jnlp -->
    /tools/lib/commons-logging.jar
    /tools/lib/log4j.jar
    /tools/lib/jnlp.jar
    <!-- Barcode, ftp -->
    /tools/lib/barbecue-1.5-beta1.jar
    /tools/lib/commons-net-1.4.0.jar
    <!-- Adempiere look and feel -->
    /tools/lib/looks-2.0.4.jar
    <!-- PDF -->
    /tools/lib/jpedal.jar
    /tools/lib/iText-2.1.7.jar
    <!-- JFreeChart -->
    /tools/lib/jfreechart-1.0.13.jar
    /tools/lib/jcommon-1.0.16.jar
    <!-- JMS -->
    /tools/lib/activemq-core-5.0.0.jar
    <!-- C3P0 connection pool -->
    /tools/lib/c3p0-0.9.1.2.jar
    /tools/lib/c3p0-oracle-thin-extras-0.9.1.2.jar
    <!-- POI -->
    /tools/lib/poi-3.0.1-FINAL-20070705.jar
    <!-- CGLib -->
    /tools/lib/cglib.jar
    <!-- Commons -->
    /tools/lib/commons-collections-3.1.jar
    /tools/lib/commons-codec.jar
    <!-- jars for 2pack -->
    /tools/lib/ant.jar
    /tools/lib/xercesImpl.jar
    <!-- cron job -->
    /tools/lib/cron4j-2.2.1.jar            

CCTools.jar,也就是Compiere Client Tools:

/lib/CCTools.jar
    /lib/META-INF/services/**
    /lib/src/**/apache/ecs/**
    <!-- Mail -->
    /tools/lib/mail.jar
    <!-- Installing Script Based in JSR 223 Scripting APIs -->
    /tools/lib/script-api.jar
    <!-- BeanShell -->
    /tools/lib/bsh-2.0b5.jar
    /tools/lib/bsh-engine.jar
    <!-- Groovy -->
    /tools/lib/groovy-all-1.5.1.jar
    /tools/lib/groovy-engine.jar
    <!-- Groovy -->
    /tools/lib/jython.jar
    /tools/lib/jython-engine.jar
    <!-- Payment Processors -->
    /tools/lib/Verisign.jar
    /tools/lib/payflow.jar
    /tools/lib/miglayout-3.7.1-swing.jar
    /tools/lib/jpayment.jar
    <!-- Log4J, jnlp -->
    /tools/lib/commons-logging.jar
    /tools/lib/log4j.jar
    /tools/lib/jnlp.jar
    <!-- Barcode, ftp -->
    /tools/lib/barbecue-1.5-beta1.jar
    /tools/lib/commons-net-1.4.0.jar
    <!-- JFreeChart -->
    /tools/lib/jfreechart-1.0.13.jar
    /tools/lib/jcommon-1.0.16.jar
    <!-- Graph -->
    /tools/lib/jgraph.jar
    <!-- Adempeire Look and Feal -->
    /tools/lib/looks-2.0.4.jar
    <!-- jars for 2pack -->
    /tools/lib/ant.jar
    /tools/lib/xercesImpl.jar
    <!-- PDF -->
    /tools/lib/jpedal.jar
    /tools/lib/iText-2.1.7.jar
    /tools/lib/swingx-1.6.jar
    <!-- JMS -->
    /tools/lib/activemq-core-5.0.0.jar
    <!-- C3P0 connection pool -->
    /tools/lib/c3p0-0.9.1.2.jar
    /tools/lib/c3p0-oracle-thin-extras-0.9.1.2.jar
    <!-- POI -->
    /tools/lib/poi-3.0.1-FINAL-20070705.jar
    <!-- Commons -->
    /tools/lib/commons-collections-3.1.jar
    /tools/lib/commons-codec.jar

base子项目

该项目生成/base/Base.jar文件:

/base/Base.jar
    Sources:
        /base/src
        /glassfishfacet/src
        /jbossfacet/src
    ClassPath:
        /lib/CCTools.jar
        /lib/oracle.jar
        /lib/postgresql.jar
        /lib/jboss.jar
        /lib/glassfish.jar
        /tools/lib/junit.jar
        /tools/lib/j2ee.jar
        /tools/lib/jnlp.jar
        /tools/lib/servlet-api.jar
        /tools/lib/cron4j-2.2.1.jar

extend子项目

该项目生成/extend/Extend.jar文件:

/extend/Extend.jar
  Sources:
        /extend/src
  ClassPath:
        /lib/CCTools.jar
        /lib/jboss.jar
        /base/Base.jar
/tools/lib/junit.jar
/tools/lib/testing/*.jar

client子项目

该项目生成/lib/Adempiere.jar文件。需要特别注意:Adempiere.jar文件额外还包含了另外三个项目的文件:base(/base/build),extend(/extend/build)和JasperReports(/JasperReports/CompiereJasper.jar)

/lib/Adempiere.jar (额外还包含base, extend和JasperReports三个项目的文)
     Sources:
        /client/src
    ClassPath:
        /lib/CCTools.jar
        /base/Base.jar
        /extend/Extend.jar
        /lib/customization.jar
        /lib/patches.jar
        /lib/jcommon-1.0.16.jar
        /lib/jfreechart-1.0.13.jar
        /tools/lib/j2ee.jar
        /tools/lib/swinglabs-0.8.0.jar      

JasperReports子项目

该项目生成两个jar文件:/JasperReports/CompiereJasper.jar和/JasperReports/CompiereJasperReqs.jar,同时CompiereJasperReqs.jar被复制一份到/lib。

CompiereJasper.jar:

/JasperReports/CompiereJasper.jar
    Sources:
        /JasperReports/src
    ClassPath:
        /client/build
        /base/Base.jar
        /extend/Extend.jar
        /lib/CSTools.jar
        /lib/oracle.jar
        /JasperReportsTools/lib/jasperreports-3.7.3.jar
        /JasperReportsTools/lib/commons-digester-1.7.jar
        /JasperReportsTools/lib/commons-beanutils-1.7.jar 
        /tools/lib/commons-logging.jar
        /tools/lib/xercesImpl.jar
        /tools/lib/xml-apis.jar
        /tools/lib/postgresql.jar  
        /tools/lib/iText-2.1.7.jar
        /jboss/client/*.jar

CompiereJasperReqs.jar,该文件实质是JasperReports必需文件的一个重新打包:

/JasperReports/CompiereJasperReqs.jar
    /JasperReportsTools/lib/iReport.jar/it/businesslogic/ireport/barcode/*.class
    /JasperReportsTools/lib/iReport.jar/it/businesslogic/ireport/chart/*.class
    /JasperReportsTools/lib/iReport.jar/it/businesslogic/ireport/util/*.class
    /JasperReportsTools/lib/iReport.jar/it/businesslogic/ireport/*Element.class
    /JasperReportsTools/lib/iReport.jar/it/businesslogic/dtds/*
    /JasperReportsTools/lib/jasperreports-3.7.3.jar
    /JasperReportsTools/lib/commons-digester-1.7.jar
    /tools/lib/commons-logging.jar
    /JasperReportsTools/lib/commons-beanutils-1.7.jar
    /tools/lib/xercesImpl.jar
    /tools/lib/xml-apis.jar

serverRoot子项目

该项目生成三个文件:/lib/adempiereRootBase.war, /lib/adempiereRoot.jar和/lib/adempiereRoot.xml。 

/lib/adempiereRoot.jar
        /serverRoot/src/main
        /serverRoot/src/main/ejb/jboss.xml => META-INF/jboss.xml
        /serverRoot/src/main/ejb/sun-ejb-jar.xml => META-INF/sun-ejb-jar.xml      
    ClassPath:
        /lib/Adempiere.jar
        /lib/CSTools.jar
        /lib/oracle.jar
        /lib/jboss.jar
        /lib/postgresql.jar        
        /tools/lib/j2ee.jar
        /tools/lib/jnlp.jar
        /tools/lib/servlet-api.jar
        /tools/lib/mail.jar
        /tools/lib/bsh-1.3.0.jar
        /tools/lib/junit.jar
        /tools/lib/cron4j-2.2.1.jar
    
/lib/adempiereRootBase.war <= /serverRoot/src/web
    /serverRoot/src/web/WEB-INF/web.xml => WEB-INF/web.xml
    /serverRoot/src/web/WEB-INF/lib => WEB-INF/lib
    
/lib/adempiereRoot.xml <= /serverRoot/src/ear/application.xml

serverApps子项目

该项目生成三个文件:lib/adempiereApps.war, /lib/adempiereApps.jar和/lib/adempiereApps.xml。 

/lib/adempiereApps.jar
        /serverApps/src/main
    ClassPath:
        /lib/Adempiere.jar
        /lib/CSTools.jar
        /tools/lib/servlet-api.jar
        /tools/lib/jsp-api.jar
    
/lib/adempiereApps.war <= /serverApps/src/web
    /serverApps/src/web/WEB-INF/web.xml => WEB-INF/web.xml
    /serverApps/src/web/WEB-INF/lib => WEB-INF/lib
    
/lib/adempiereApps.xml <= /serverApps/src/ear/application.xml

webStore子项目

该项目生成两个文件:/lib/adempiereWebStore.war和/lib/adempiereWebStore.xml。

/lib/adempiereWebStore.war <= /webStore/src/web
    
/lib/adempiereWebStore.xml <= /webStore/src/ear/application.xml

webCM子项目

该项目生成两个文件:/lib/adempiereWebCMbase.war和/lib/adempiereWebCM.xml

/lib/adempiereWebCMbase.war <= /webCM/src/web
        /webCM/src/main
    ClassPath:
        /lib/Adempiere.jar
        /lib/CSTools.jar
        /tools/lib/javaee.jar

/lib/adempiereWebCM.xml <= /webCM/src/ear/application.xml

zkwebui子项目

该项目生成一个文件:/lib/webui.war。

/lib/webui.war <= /zkwebui/**
        /zkwebui/WEB-INF/src
    ClassPath:
        /base/build
        /client/build
        /JasperReports/build
        /lib/*.jar
        /tools/lib/servlet-api.jar
        /zkwebui/WEB-INF/lib/*.jar
        /zkwebui/WEB-INF/lib/classes   

install子项目

这里的安装指的是创建安装文件,不是安装到目标系统。

首先,它会创建/lib/CInstall.jar文件。

/lib/CInstall.jar
    Sources:
        /install/src
    ClassPath:
        /lib/CCTools.jar
        /lib/Adempiere.jar
        /lib/oracle.jar
        /lib/postgresql.jar
        /tools/lib/ant.jar
        /tools/lib/ant-launcher.jar   
    Includes:
        /tools/lib/ant.jar
        /tools/lib/ant-launcher.jar
        /tools/lib/ant-commons-net.jar
        /tools/lib/commons-net-1.4.0.jar

然后,将安装程序需要的所有文件都放到ADEMPIERE_HOME目录:

ADEMPIERE_HOME <= /install/Adempiere
    RUN_Adempiere.bat <= /utils/RUN_Adempiere.bat
    RUN_Adempiere.sh <= /utils/RUN_Adempiere.sh
    images <= /install/Adempiere/images
    packages
        liberoMFG/lib/liberoMFG.jar <= /packages/liberoMFG.jar
        liberoHR/lib/liberoHR.jar <= /packages/liberoHR.jar
    zkpackages
        liberoMFG/lib/liberozkMFG.jar <= /zkpackages/liberozkMFG.jar
    lib <= /lib
        CheckConflicts.sh <= /lib/CheckConflicts.sh
        Adempiere.ico <= /launch/Adempiere.ico
        Adempiere.ico <= /launch/Adempiere.ico
        Adempiere.exe <= /launch/Release/Adempiere.exe
        CInstall.jar <= /install/CInstall.jar
        sqlj.jar <= /sqlj/sqlj.jar
        CompiereJasperReqs.jar <= /JasperReports/CompiereJasperReqs.jar
        index.html
    utils <= /utils
        oracle
        postgresql
        oracleXE
    data
    jboss
    glassfish

最后,在ADEMPIERE_INSTALL目录创建安装压缩文件。

原文地址:https://www.cnblogs.com/eastson/p/2671581.html