zoukankan      html  css  js  c++  java
  • 对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目录创建安装压缩文件。

  • 相关阅读:
    Android自定义之仿360Root大师水纹效果
    Android之TextView的Span样式源码剖析
    Android之TextView的样式类Span的使用详解
    随着ScrollView的滑动,渐渐的执行动画View
    仿微信主界面导航栏图标字体颜色的变化
    android自定义之 5.0 风格progressBar
    Android性能优化之内存篇
    Android性能优化之运算篇
    How to install Zabbix5.0 LTS version with Yum on the CentOS 7.8 system?
    How to install Zabbix4.0 LTS version with Yum on the Oracle Linux 7.3 system?
  • 原文地址:https://www.cnblogs.com/eastson/p/2671581.html
Copyright © 2011-2022 走看看