build.xml
author Javier Armendáriz <javier.armendariz@openbravo.com>
Fri, 23 Nov 2018 10:32:52 +0100
changeset 35120 bc617f478775
parent 35020 193ad7dbdbcd
child 35226 4afbb3dfd15d
permissions -rw-r--r--
Fixed issue 39663: Build fails in Java 11 since log4j upgrade.

New log4j libraries are multi-release jars (mrjar), meaning that they can define
multiple version of classes depending on the JVM version being run. Currently
ant does not support mrjars for custom java tasks and build fails when executing
LogManager.getLogger() inside an ant task.
For this reason, a new jar is included during build to override LogManager and
StackLocator implementation to make build work in Java9+. In addition, classpath
in build script is modified to force including the build libraries first in the
classpath and use these classes instead of the ones implemented in log4j-api.
asier@43
     1
<?xml version="1.0" encoding="UTF-8" ?>
asier@43
     2
<!--
juanpablo@1548
     3
*************************************************************************
juanpablo@1548
     4
* The contents of this file are subject to the Openbravo  Public  License
priya@9072
     5
* Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
juanpablo@1548
     6
* Version 1.1  with a permitted attribution clause; you may not  use this
juanpablo@1548
     7
* file except in compliance with the License. You  may  obtain  a copy of
juanpablo@1548
     8
* the License at http://www.openbravo.com/legal/license.html
juanpablo@1548
     9
* Software distributed under the License  is  distributed  on  an "AS IS"
juanpablo@1548
    10
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
juanpablo@1548
    11
* License for the specific  language  governing  rights  and  limitations
juanpablo@1548
    12
* under the License.
juanpablo@1548
    13
* The Original Code is Openbravo ERP.
ggi@6701
    14
* The Initial Developer of the Original Code is Openbravo SLU
carlos@33710
    15
* All portions are Copyright (C) 2001-2018 Openbravo SLU
juanpablo@1548
    16
* All Rights Reserved.
juanpablo@1548
    17
* Contributor(s):  ______________________________________.
juanpablo@1548
    18
************************************************************************
asier@43
    19
-->
juanpablo@213
    20
<!--
juanpablo@213
    21
List of targets:
juanpablo@213
    22
juanpablo@213
    23
init: checks if exists the JAVA_HOME var.
juanpablo@213
    24
compile.complete: refer to compile.complete target of src.
juanpablo@213
    25
compile: refer to compile target of src.
juanpablo@213
    26
compile.complete.development: refer to compile.complete.development target of src.
juanpablo@213
    27
compile.development: refer to compile.development target of src.
asier@1929
    28
compile.web: refer to compile.web: target of src.
asier@1929
    29
compile.web.development: refer to compile.web.development: target of src.
juanpablo@213
    30
compile.src: refer to compile.src target of src.
juanpablo@213
    31
war: refer to build.war target of src.
juanpablo@213
    32
core.lib: refer to build target of src-core.
juanpablo@213
    33
wad.lib: refer to build target of src-wad.
juanpablo@213
    34
trl.lib: refer to build target of src-trl.
juanpablo@213
    35
database.lib: refer to jar target of src-db.
juanpablo@213
    36
clean: refer to clean target of src.
juanpablo@213
    37
trl.clean: refer to trl.clean target of src.
juanpablo@213
    38
translate: refer to translate target of src.
juanpablo@213
    39
installWebService: refer to installWebService target of src.
juanpablo@213
    40
uninstallWebService: refer to uninstallWebService target of src.
juanpablo@2061
    41
deploy.context: deploy the context into Tomcat using the manager
juanpablo@213
    42
install.source: install the ERP from sources (from subversion).
juanpablo@213
    43
create.database: refer to create.database target of database.
juanpablo@213
    44
update.database: refer to update.database target of database.
juanpablo@213
    45
create.database.script: refer to create.database.script target of database.
juanpablo@213
    46
update.database.script: refer to update.database.script target of database.
juanpablo@213
    47
export.database: exports database structure and data to xml files.
fernando@202
    48
-->
asier@43
    49
<project name="openbravo" default="compile.complete" basedir=".">
martin@2871
    50
  <property environment="env" />
martin@2871
    51
  <property name="base.config" location="config" />
martin@2871
    52
  <property file="${base.config}/Openbravo.properties" />
martin@2871
    53
  <property file="${base.config}/checksums" />
juanpablo@131
    54
martin@2871
    55
  <property name="base.config" location="config" />
martin@2871
    56
  <property name="base.src" location="src" />
martin@3794
    57
  <property name="base.src.test" location="src-test" />
martin@2871
    58
  <property name="base.src.core" location="src-core" />
martin@2871
    59
  <property name="base.src.db" location="src-db" />
martin@2871
    60
  <property name="base.src.trl" location="src-trl" />
martin@2871
    61
  <property name="base.src.wad" location="src-wad" />
martin@2871
    62
  <property name="base.src.gen" location="src-gen" />
martin@2871
    63
  <property name="base.db" location="src-db/database" />
martin@2871
    64
  <property name="base.web" location="web" />
martin@2871
    65
  <property name="base.context" location="WebContent" />
martin@2871
    66
  <property name="base.design" location="${base.context}/src-loc" />
martin@2871
    67
  <property name="base.lib" location="lib" />
martin@2871
    68
  <property name="base.modules" location="modules" />
martin@2871
    69
  <property name="build" location="build/classes" />
antonio@7541
    70
  <property name="build.apply.module" location="build.apply/classes" />
martin@2871
    71
  <property name="build.AD" location="srcAD" />
martin@2871
    72
  <property name="build.sqlc" location="build/javasqlc" />
martin@2871
    73
  <property name="build.core.lib" location="src-core/lib" />
martin@2871
    74
  <property name="build.trl.lib" location="src-trl/lib" />
martin@2871
    75
  <property name="build.wad.lib" location="src-wad/lib" />
martin@2871
    76
  <property name="build.docs" location="docs/api" />
martin@2871
    77
  <property name="jakarta.home" location="${env.CATALINA_HOME}" />
martin@2871
    78
  <property name="module" value="%" />
antonio@6107
    79
  <property name="apply.on.create" value="false" />
antonio@6108
    80
  <property name="apply.on.update" value="true" />
martin@2871
    81
  <property name="obx.export.RD" value="false" />
martin@2871
    82
  <property name="obx.export.DB" value="false" />
martin@2871
    83
  <property name="obx.export.CS" value="false" />
asier@19231
    84
  <property name="obx.export.validate" value="true" />
asier@19231
    85
  <property name="obx.export.allDeps" value="false" />
martin@2871
    86
  <property name="chekPerms" value="false" />
antonio@2896
    87
  <property name="force" value="false" />
antonio@7709
    88
  <property name="strict.template.application" value="false" />
antonio@4937
    89
  <property name="rd" value="false" />
asier@3008
    90
  <property name="local" value="true" />
asier@3995
    91
  <property name="apply.modules.complete.compilation" value="false" />
martin@14869
    92
  <property name="calculate.core.revision" value="true"/>
martin@14869
    93
  <property name="stopOnWadError" value="false"/>
martin@14869
    94
  <property name="friendlyWarnings" value="false"/>
martin@14869
    95
  <property name="checkTranslationConsistency" value="true"/>
martin@14869
    96
  <property name="buildValidation" value="true"/>
antonio@29768
    97
  <property name="modules" value=""/> 
antonio@29768
    98
 
carlos@33755
    99
  <condition property="xdoclint.missing" value="" else="-Xdoclint:-missing">
carlos@33755
   100
    <equals arg1="${ant.java.version}" arg2="1.7"/>
asier@32951
   101
  </condition>
asier@32951
   102
carlos@34282
   103
  <condition property="html.version" value="-html5" else="">
carlos@34282
   104
    <not>
carlos@34282
   105
      <or>
carlos@34282
   106
        <equals arg1="${ant.java.version}" arg2="1.7"/>
carlos@34282
   107
        <equals arg1="${ant.java.version}" arg2="1.8"/>
carlos@34282
   108
      </or>
carlos@34282
   109
    </not>
carlos@34282
   110
  </condition>
asier@34825
   111
  
asier@34825
   112
  <condition property="jvm.arg.line" value="" else="--add-opens java.base/java.lang=ALL-UNNAMED">
asier@34825
   113
    <equals arg1="${ant.java.version}" arg2="1.8"/>
asier@34825
   114
  </condition>
carlos@34282
   115
asier@4279
   116
  <condition property="calculate.core.rev">
martin@14869
   117
   <istrue value="${calculate.core.revision}"/>
asier@4279
   118
  </condition>
martin@14869
   119
  
asier@4279
   120
  <condition property="xml.core.rev">
martin@14869
   121
     <isfalse value="${calculate.core.revision}"/>
asier@4279
   122
  </condition>
martin@14869
   123
  
juanpablo@2522
   124
  <condition property="deploy.mode" value="class">
juanpablo@2522
   125
    <not>
juanpablo@2522
   126
      <isset property="${deploy.mode}" />
juanpablo@2522
   127
    </not>
juanpablo@2522
   128
  </condition>
martin@2345
   129
martin@2871
   130
  <condition property="mode.war">
martin@2871
   131
    <equals arg1="war" arg2="${deploy.mode}" />
martin@2871
   132
  </condition>
martin@2345
   133
martin@2871
   134
  <condition property="mode.class">
martin@2871
   135
    <equals arg1="class" arg2="${deploy.mode}" />
martin@2871
   136
  </condition>
martin@2345
   137
martin@2871
   138
  <condition property="apply.modules.on.create">
martin@2871
   139
    <or>
martin@2871
   140
      <equals arg1="yes" arg2="${apply.on.create}" />
martin@2871
   141
      <equals arg1="true" arg2="${apply.on.create}" />
martin@2871
   142
    </or>
martin@2871
   143
  </condition>
martin@2345
   144
antonio@6108
   145
  <condition property="apply.modules.on.update">
antonio@6108
   146
    <or>
antonio@6108
   147
      <equals arg1="yes" arg2="${apply.on.update}" />
antonio@6108
   148
      <equals arg1="true" arg2="${apply.on.update}" />
antonio@6108
   149
    </or>
antonio@6108
   150
  </condition>
antonio@6108
   151
martin@2871
   152
  <condition property="obx.exp.DB">
martin@2871
   153
    <or>
martin@2871
   154
      <equals arg1="yes" arg2="${obx.export.DB}" />
martin@2871
   155
      <equals arg1="true" arg2="${obx.export.DB}" />
martin@2871
   156
    </or>
martin@2871
   157
  </condition>
martin@2345
   158
martin@2871
   159
  <condition property="obx.exp.CS">
martin@2871
   160
    <or>
martin@2871
   161
      <equals arg1="yes" arg2="${obx.export.CS}" />
martin@2871
   162
      <equals arg1="true" arg2="${obx.export.CS}" />
martin@2871
   163
    </or>
martin@2871
   164
  </condition>
asier@19231
   165
  
asier@19231
   166
  <condition property="obx.exp.validate">
asier@19231
   167
    <or>
asier@19231
   168
      <equals arg1="yes" arg2="${obx.export.validate}" />
asier@19231
   169
      <equals arg1="true" arg2="${obx.export.validate}" />
asier@19231
   170
    </or>
asier@19231
   171
  </condition>
asier@43
   172
antonio@3337
   173
  <condition property="timestamp">
antonio@3337
   174
    <or>
antonio@3337
   175
      <equals arg1="no" arg2="${execute.update.build.timestamp}" />
antonio@3337
   176
      <equals arg1="false" arg2="${execute.update.build.timestamp}" />
antonio@3337
   177
    </or>
antonio@3337
   178
  </condition>
antonio@3337
   179
martin@2871
   180
  <condition property="jakarta.base" value="${env.CATALINA_BASE}" else="${jakarta.home}">
martin@2871
   181
    <and>
martin@2871
   182
      <isset property="env.CATALINA_BASE" />
martin@2871
   183
    </and>
martin@2871
   184
  </condition>
martin@2871
   185
  <property name="log.path" location="${jakarta.base}/logs" />
martin@2871
   186
  <property name="lib" location="${jakarta.home}/common" />
martin@2871
   187
  <property name="jakarta.context" location="${jakarta.base}/webapps/${context.name}" />
asier@6240
   188
juanpablo@6241
   189
  <condition property="build.maxmemory" value="1024M" else="512M">
juanpablo@6241
   190
    <or>
juanpablo@6241
   191
      <equals arg1="${os.arch}" arg2="amd64" />
juanpablo@6241
   192
      <equals arg1="${os.arch}" arg2="x86_64" />
juanpablo@6241
   193
      <equals arg1="${os.arch}" arg2="ia64" />
juanpablo@6241
   194
    </or>
asier@6240
   195
  </condition>
stefan@124
   196
juanpablo@7924
   197
  <condition property="allow.root.user" value="true" else="false">
juanpablo@7924
   198
    <or>
juanpablo@7924
   199
      <equals arg1="yes" arg2="${allow.root}" />
juanpablo@7924
   200
      <equals arg1="true" arg2="${allow.root}" />
juanpablo@7924
   201
    </or>
juanpablo@7924
   202
  </condition>
juanpablo@7924
   203
martin@2871
   204
  <condition property="no.java.home" value="true">
martin@2871
   205
    <not>
martin@2871
   206
      <isset property="env.JAVA_HOME" />
martin@2871
   207
    </not>
martin@2871
   208
  </condition>
juanpablo@1548
   209
antonio@2838
   210
  <condition property="bbdd.owner.url" value="${bbdd.url}/${bbdd.sid}" else="${bbdd.url}">
antonio@2838
   211
    <and>
martin@2871
   212
      <equals arg1="${bbdd.rdbms}" arg2="POSTGRE" />
antonio@2838
   213
    </and>
antonio@2838
   214
  </condition>
juanpablo@7924
   215
juanpablo@7924
   216
  <condition property="root.user">
juanpablo@7924
   217
    <and>
juanpablo@7924
   218
      <equals arg1="${user.name}" arg2="root" />
juanpablo@7924
   219
      <not>
juanpablo@7924
   220
        <contains string="${os.name}" substring="Windows" />
juanpablo@7924
   221
      </not>
juanpablo@7924
   222
      <equals arg1="false" arg2="${allow.root.user}" />
juanpablo@7924
   223
    </and>
juanpablo@7924
   224
  </condition>
juanpablo@7924
   225
stefan@9215
   226
  <!-- Minimal classpath used for executing Wad at compile time -->
stefan@9215
   227
  <path id="wad.class.path">
stefan@9215
   228
    <fileset dir="${base.lib}">
stefan@9215
   229
      <include name="**/*.jar" />
stefan@9215
   230
    </fileset>
stefan@9215
   231
    <fileset dir="${build.core.lib}">
stefan@9215
   232
      <include name="openbravo-core.jar" />
stefan@9215
   233
    </fileset>
stefan@9215
   234
    <fileset dir="${build.wad.lib}">
stefan@9215
   235
      <include name="openbravo-wad.jar" />
stefan@9215
   236
    </fileset>
javier@34968
   237
    <pathelement path="${base.config}" />
stefan@9215
   238
  </path>
stefan@9215
   239
martin@2871
   240
  <path id="project.class.path">
antonio@7894
   241
    <dirset dir="${base.modules}">
antonio@7894
   242
      <include name="*/build/classes/" />
antonio@7894
   243
    </dirset>
antonio@10098
   244
    <pathelement path="${basedir}/src-util/modulescript/build/classes/" />
javier@34968
   245
    <pathelement path="${base.config}" />
martin@2871
   246
    <pathelement path="${build}" />
martin@2871
   247
    <pathelement path="${base.src}" />
javier@35120
   248
    <fileset dir="${base.lib}/build">
javier@35120
   249
      <include name="*.jar" />
javier@35120
   250
    </fileset>
martin@2871
   251
    <fileset dir="${base.lib}">
javier@35120
   252
      <exclude name="build/*" />
martin@2871
   253
      <include name="**/*.jar" />
martin@2871
   254
    </fileset>
martin@2871
   255
    <fileset dir="${build.core.lib}">
martin@2871
   256
      <include name="openbravo-core.jar" />
martin@2871
   257
    </fileset>
martin@2871
   258
    <fileset dir="${build.trl.lib}">
martin@2871
   259
      <include name="openbravo-trl.jar" />
martin@2871
   260
    </fileset>
martin@2871
   261
    <fileset dir="${build.wad.lib}">
martin@2871
   262
      <include name="openbravo-wad.jar" />
martin@2871
   263
    </fileset>
martin@2871
   264
    <fileset dir="${base.lib}">
martin@2871
   265
      <include name="**/*.jar" />
asier@24247
   266
      <exclude name="**/test/*.jar" />
martin@2871
   267
    </fileset>
martin@2871
   268
    <fileset dir="${base.db}/lib/">
martin@2871
   269
      <include name="**/*.jar" />
martin@2871
   270
    </fileset>
martin@2871
   271
    <fileset dir="${base.modules}">
martin@2871
   272
      <include name="*/lib/**" />
asier@24247
   273
       <exclude name="**/test/*.jar" />
martin@2871
   274
    </fileset>
antonio@7894
   275
  </path>
antonio@7894
   276
antonio@7894
   277
  <!-- This classpath is needed only for the compile.apply.module task-->
antonio@7894
   278
  <path id="apply.module.compile.classpath">
antonio@6886
   279
    <dirset dir="${base.modules}">
antonio@6886
   280
      <include name="*/build/classes/" />
antonio@6886
   281
    </dirset>
antonio@6886
   282
    <pathelement path="${basedir}/../../src-util/modulescript/build/classes/" />
antonio@7543
   283
    <pathelement path="${build.apply.module}" />
javier@34968
   284
    <pathelement path="${base.config}" />
antonio@7543
   285
    <pathelement path="${base.src}" />
antonio@7543
   286
    <fileset dir="${base.lib}">
antonio@7543
   287
      <include name="**/*.jar" />
antonio@7543
   288
    </fileset>
antonio@7543
   289
    <fileset dir="${build.core.lib}">
antonio@7543
   290
      <include name="openbravo-core.jar" />
antonio@7543
   291
    </fileset>
antonio@7543
   292
    <fileset dir="${build.trl.lib}">
antonio@7543
   293
      <include name="openbravo-trl.jar" />
antonio@7543
   294
    </fileset>
antonio@7543
   295
    <fileset dir="${build.wad.lib}">
antonio@7543
   296
      <include name="openbravo-wad.jar" />
antonio@7543
   297
    </fileset>
antonio@7543
   298
    <fileset dir="${base.lib}">
antonio@7543
   299
      <include name="**/*.jar" />
antonio@7543
   300
    </fileset>
antonio@7543
   301
    <fileset dir="${base.db}/lib/">
antonio@7543
   302
      <include name="**/*.jar" />
antonio@7543
   303
    </fileset>
antonio@7543
   304
    <fileset dir="${base.modules}">
antonio@7543
   305
      <include name="*/lib/**" />
antonio@7543
   306
    </fileset>
antonio@7894
   307
  </path>
martin@14869
   308
  
antonio@7894
   309
  <!-- This classpath is needed only for the apply.module task-->
antonio@7894
   310
  <path id="apply.module.runtime.classpath">
antonio@7543
   311
    <dirset dir="${base.modules}">
antonio@7543
   312
      <include name="*/build/classes/" />
antonio@7543
   313
    </dirset>
antonio@7543
   314
    <pathelement path="${basedir}/../../src-util/modulescript/build/classes/" />
javier@34968
   315
    <pathelement path="${base.config}" />
antonio@7541
   316
    <pathelement path="${build.apply.module}" />
antonio@7543
   317
    <pathelement path="${build}" />
antonio@7541
   318
    <pathelement path="${base.src}" />
antonio@7541
   319
    <fileset dir="${base.lib}">
antonio@7541
   320
      <include name="**/*.jar" />
antonio@7541
   321
    </fileset>
antonio@7541
   322
    <fileset dir="${build.core.lib}">
antonio@7541
   323
      <include name="openbravo-core.jar" />
antonio@7541
   324
    </fileset>
antonio@7541
   325
    <fileset dir="${build.trl.lib}">
antonio@7541
   326
      <include name="openbravo-trl.jar" />
antonio@7541
   327
    </fileset>
antonio@7541
   328
    <fileset dir="${build.wad.lib}">
antonio@7541
   329
      <include name="openbravo-wad.jar" />
antonio@7541
   330
    </fileset>
antonio@7541
   331
    <fileset dir="${base.lib}">
antonio@7541
   332
      <include name="**/*.jar" />
antonio@7541
   333
    </fileset>
antonio@7541
   334
    <fileset dir="${base.db}/lib/">
antonio@7541
   335
      <include name="**/*.jar" />
antonio@7541
   336
    </fileset>
antonio@7541
   337
    <fileset dir="${base.modules}">
antonio@7541
   338
      <include name="*/lib/**" />
antonio@7541
   339
    </fileset>
antonio@7541
   340
  </path>
martin@14869
   341
  
antonio@5617
   342
  <macrodef name="updatesystemstatus">
martin@14869
   343
     <attribute name="v" default="NOT SET"/>
martin@14869
   344
     <sequential>
martin@14869
   345
       <sql driver="${bbdd.driver}" url="${bbdd.owner.url}" userid="${bbdd.user}" password="${bbdd.password}" onerror="continue" autocommit="true">
martin@14869
   346
         <classpath> <fileset dir="${base.lib}"> <include name="**/*.jar"> </include> </fileset> </classpath>
martin@14869
   347
         <transaction> UPDATE ad_system_info SET system_status='@{v}' ;
antonio@5618
   348
                       DELETE FROM ad_error_log where system_status=(select system_status from ad_system_info)
antonio@5618
   349
         </transaction>
martin@14869
   350
       </sql>
martin@14869
   351
     </sequential>
antonio@5617
   352
  </macrodef>
martin@14869
   353
  
antonio@16688
   354
  <macrodef name="updatesystemstatuswhennot">
antonio@16688
   355
    <attribute name="v" default="NOT SET"/>
antonio@16688
   356
    <attribute name="previous" default="NOT SET"/>
antonio@16688
   357
     <sequential>
antonio@16688
   358
       <sql driver="${bbdd.driver}" url="${bbdd.owner.url}" userid="${bbdd.user}" password="${bbdd.password}" onerror="continue" autocommit="true">
antonio@16688
   359
         <classpath> <fileset dir="${base.lib}"> <include name="**/*.jar"> </include> </fileset> </classpath>
antonio@16688
   360
         <transaction> UPDATE ad_system_info SET system_status='@{v}' where system_status!='@{previous}' ;
antonio@16688
   361
                       DELETE FROM ad_error_log where system_status=(select system_status from ad_system_info)
antonio@16688
   362
         </transaction>
antonio@16688
   363
       </sql>
antonio@16688
   364
     </sequential>
antonio@16688
   365
  </macrodef>
antonio@16688
   366
  
martin@2871
   367
  <taskdef resource="axis-tasks.properties" classpathref="project.class.path" />
martin@14869
   368
  
stefan@33879
   369
  <target name="init">
juanpablo@11541
   370
    <fail if="root.user" message="Don't run ant tasks with the root user" />
martin@2871
   371
    <fail if="no.java.home" message="The environment variable JAVA_HOME is not set." />
asier@34303
   372
    <fail message="Unsupported Java version ${ant.java.version}. Minimum required is 8 (1.8).">
asier@33930
   373
      <condition>
asier@34305
   374
        <or>
asier@34305
   375
          <equals arg1="${ant.java.version}" arg2="1.6"/>
asier@34305
   376
          <equals arg1="${ant.java.version}" arg2="1.7"/>
asier@34305
   377
        </or>
asier@33930
   378
      </condition>
asier@33930
   379
    </fail>
asier@33931
   380
    <antversion property="min.ant.version" atleast="1.9.2" />
asier@33931
   381
    <antversion property="actual.ant.version" />
asier@33931
   382
    <fail message="Unsupported ant version ${actual.ant.version}. Minimum required is 1.9.2.">
asier@33931
   383
      <condition>
asier@33931
   384
        <not>
asier@33931
   385
          <isset property="min.ant.version"/>
asier@33931
   386
        </not>
asier@33931
   387
      </condition>
asier@33931
   388
    </fail>
martin@2871
   389
  </target>
stefan@124
   390
miguel@16422
   391
  <target name="compile.complete" depends="init, core.lib, wad.lib, trl.lib">
martin@2871
   392
    <ant dir="${base.src}" target="compile.complete" inheritAll="true" inheritRefs="true" />
martin@2871
   393
  </target>
asier@2853
   394
shankar@20726
   395
  <target name="migrate.attachments" depends="init">
shankar@20765
   396
    <taskdef name="MigrateAttachments" classname="org.openbravo.erpCommon.utility.MigrateAttachments" >
shankar@20726
   397
      <classpath refid="project.class.path" />
shankar@20765
   398
    </taskdef>
shankar@20765
   399
    <MigrateAttachments/>
shankar@20726
   400
  </target>
shankar@20726
   401
asier@3013
   402
  <target name="smartbuild" depends="init">
martin@3038
   403
    <property name="smart.mode" value="true" />
antonio@2996
   404
    <property name="onlyIfModified" value="true" />
martin@3038
   405
    <antcall target="core.lib" />
martin@14869
   406
    
asier@4288
   407
    <condition property="no.local">
asier@4288
   408
      <not>
asier@4288
   409
        <istrue value="${local}" />
asier@4288
   410
      </not>
asier@4288
   411
    </condition>
asier@4288
   412
    <antcall target="update.database.if.no.local" />
martin@14869
   413
    
martin@3038
   414
    <antcall target="wad.lib" />
martin@14869
   415
    
asier@5219
   416
    <taskdef name="CheckSumCondition" classname="org.openbravo.utils.CheckSumCondition">
asier@5219
   417
      <classpath refid="project.class.path" />
asier@5219
   418
    </taskdef>
martin@14869
   419
    
martin@14869
   420
    <CheckSumCondition obDir="${basedir}"
martin@14869
   421
                       type="md5.wad"
martin@14869
   422
                       property="test.md5.wad"/>
martin@3038
   423
martin@3038
   424
    <condition property="new.wad">
martin@14869
   425
        <istrue value="${test.md5.wad}"/>
martin@3038
   426
    </condition>
martin@3038
   427
martin@3038
   428
    <antcall target="trl.lib" />
martin@14869
   429
    
asier@3660
   430
    <antcall inheritall="true" inheritrefs="true" target="generate.entities.quick" />
martin@2917
   431
asier@3013
   432
    <ant dir="${base.src}" target="smartbuild" inheritAll="true" inheritRefs="true" />
martin@3038
   433
antonio@5615
   434
    <ant dir="${base.db}" target="setApplied" inheritAll="true" inheritRefs="true" />
antonio@4933
   435
    <antcall target="build.deploy" />
antonio@16688
   436
    <updatesystemstatuswhennot v="RB51" previous="RB12"/>
martin@2871
   437
  </target>
martin@3038
   438
asier@3008
   439
  <target name="update.database.if.no.local" if="no.local">
asier@3008
   440
    <antcall target="update.database" />
asier@3008
   441
  </target>
antonio@2996
   442
asier@2982
   443
  <target name="build.deploy">
martin@3038
   444
    <antcall target="build.deploy.war" />
martin@3038
   445
    <antcall target="build.deploy.class" />
asier@2982
   446
  </target>
martin@3038
   447
asier@2982
   448
  <target name="build.deploy.class" if="mode.class">
asier@2982
   449
    <ant dir="${base.src}" target="copy.files" inheritAll="true" inheritRefs="true" />
asier@2982
   450
    <mkdir dir="${jakarta.base}/webapps/${context.name}/WEB-INF/lib" />
martin@3038
   451
    <copy todir="${jakarta.base}/webapps/${context.name}/WEB-INF/lib" file="${build.core.lib}/openbravo-core.jar" encoding="UTF-8" />
asier@2982
   452
  </target>
martin@3038
   453
stefan@9978
   454
  <!-- Only needed in special cases. See issue 15709 for details.
stefan@9978
   455
       This task (if deploy.mode=class) does sync jar-files from WebContent -> deployed webapp (& delete orphan jars)
stefan@9978
   456
  -->
stefan@9978
   457
  <target name="copy.files.jarsync" depends="init" if="mode.class">
stefan@9978
   458
    <ant dir="${base.src}" target="copy.files.jarsync.do" inheritAll="true" inheritRefs="true" />
stefan@9978
   459
  </target>
stefan@9978
   460
asier@2982
   461
  <target name="build.deploy.war" if="mode.war">
martin@3038
   462
    <antcall target="war" />
asier@2982
   463
  </target>
martin@2345
   464
miguel@16422
   465
  <target name="compile" depends="init,core.lib, wad.lib, trl.lib">
martin@2871
   466
    <ant dir="${base.src}" target="compile" inheritAll="true" inheritRefs="true" />
martin@2871
   467
  </target>
martin@2345
   468
antonio@6897
   469
  <target name="buildvalidation" depends="init, core.lib">
martin@14869
   470
    <updatesystemstatus v="RB11"/> 
antonio@7925
   471
    <condition property="buildValidation.var">
martin@14869
   472
      <istrue value="${buildValidation}"  />
antonio@7925
   473
    </condition>
antonio@6897
   474
    <ant dir="src-util/buildvalidation" target="buildvalidation" inheritAll="true" inheritRefs="true" />
antonio@6886
   475
  </target>
martin@14869
   476
  
antonio@6886
   477
  <target name="compile.buildvalidation" depends="init, core.lib">
antonio@6886
   478
    <ant dir="src-util/buildvalidation" target="compile" inheritAll="true" inheritRefs="true" />
antonio@6886
   479
  </target>
martin@14869
   480
  
antonio@6886
   481
  <target name="compile.modulescript" depends="init, core.lib">
antonio@6886
   482
    <ant dir="src-util/modulescript" target="compile" inheritAll="true" inheritRefs="true" />
antonio@6886
   483
  </target>
antonio@6886
   484
antonio@7535
   485
  <target name="compile.complete.deploy" depends="compile.complete.development, compile.complete.war">
antonio@7512
   486
asier@5216
   487
    <!-- Calculate wad checksum to enable smartbuild-->
asier@5219
   488
    <taskdef name="CheckSumCondition" classname="org.openbravo.utils.CheckSumCondition">
asier@5219
   489
      <classpath refid="project.class.path" />
asier@5219
   490
    </taskdef>
martin@14869
   491
    
martin@14869
   492
    <CheckSumCondition obDir="${basedir}"
martin@14869
   493
                           type="md5.wad"
martin@14869
   494
                           property="test.md5.wad"/>
martin@2871
   495
  </target>
asier@43
   496
inigo@31982
   497
  <target name="compile.complete.development" depends="init, core.lib, wad.lib, trl.lib" unless="mode.war">
martin@14869
   498
    <updatesystemstatus v="RB43"/>
martin@2871
   499
    <ant dir="${base.src}" target="compile.complete.development" inheritAll="true" inheritRefs="true" />
martin@2871
   500
  </target>
asier@43
   501
martin@2871
   502
  <target name="compile.complete.war" depends="init" if="mode.war">
martin@14869
   503
    <updatesystemstatus v="RB43"/>
martin@2871
   504
    <antcall target="compile.complete" />
martin@2871
   505
    <antcall target="war" />
martin@2871
   506
  </target>
asier@1929
   507
stefan@5405
   508
  <target name="compile.deploy" depends="compile.war, compile.development">
martin@14869
   509
    <updatesystemstatus v="RB51"/>
martin@2871
   510
  </target>
martin@2686
   511
asier@7164
   512
  <target name="compile.development" depends="init" unless="mode.war">
martin@2871
   513
    <ant dir="${base.src}" target="compile.development" inheritAll="true" inheritRefs="true" />
martin@2871
   514
  </target>
martin@2686
   515
martin@2871
   516
  <target name="validate.database">
martin@2871
   517
    <ant dir="${base.src}" target="validate.database" inheritAll="true" inheritRefs="true" />
martin@2871
   518
  </target>
asier@1929
   519
martin@2871
   520
  <target name="validate.modules">
martin@2871
   521
    <ant dir="${base.src}" target="validate.modules" inheritAll="true" inheritRefs="true" />
martin@2871
   522
  </target>
asier@43
   523
martin@2871
   524
  <target name="compile.war" if="mode.war">
asier@7165
   525
    <antcall target="generate.entities" />
martin@2871
   526
    <antcall target="compile" />
martin@2871
   527
    <antcall target="war" />
martin@2871
   528
  </target>
ivan@1738
   529
martin@2871
   530
  <target name="compile.web" depends="init">
martin@2871
   531
    <ant dir="${base.src}" target="compile.web" inheritAll="true" inheritRefs="true" />
martin@2871
   532
  </target>
asier@43
   533
martin@2871
   534
  <target name="compile.web.development" depends="init">
martin@2871
   535
    <ant dir="${base.src}" target="compile.web.development" inheritAll="true" inheritRefs="true" />
martin@2871
   536
  </target>
martin@2245
   537
martin@2871
   538
  <target name="compile.src.gen" depends="init">
martin@2871
   539
    <ant dir="${base.src}" target="compile.src.gen" inheritAll="true" inheritRefs="true" />
martin@2871
   540
  </target>
martin@2830
   541
martin@3794
   542
  <target name="generate.java.doc">
carlos@34282
   543
    <javadoc Windowtitle="${title}" access="protected" Header="${header}" Footer="${footer}" destdir="${build.docs}" maxmemory="1024M" failonerror="yes" additionalparam="${xdoclint.missing} ${html.version}">
stefan@27905
   544
      <sourcepath>
stefan@27905
   545
        <pathelement path="${base.src}" />
stefan@27905
   546
        <pathelement path="${base.src.test}/src" />
stefan@27905
   547
        <pathelement path="${build.AD}" />
stefan@27905
   548
        <pathelement path="${base.src.core}/src" />
stefan@27905
   549
        <pathelement path="${base.src.gen}" />
stefan@27905
   550
        <pathelement path="build/javasqlc/src" />
stefan@27905
   551
        <pathelement path="build/javasqlc/srcAD" />
stefan@27905
   552
        <dirset dir="${base.modules}">
stefan@27905
   553
          <include name="*/src" />
stefan@27905
   554
          <include name="*/src-test" />
stefan@27905
   555
        </dirset>
stefan@27905
   556
      </sourcepath>
martin@14869
   557
      <excludepackage name="org.openbravo.erpWindows.*"/>
martin@3794
   558
      <classpath>
martin@14869
   559
        <path refid="project.class.path"/>
martin@3794
   560
        <pathelement path="lib/build/js.jar" />
stefan@27905
   561
        <fileset dir="${base.modules}">
stefan@27905
   562
          <include name="*/lib/test/*.jar" />
stefan@27905
   563
        </fileset>
martin@3794
   564
      </classpath>
stefan@34510
   565
      <link href="https://docs.oracle.com/javase/8/docs/api/"/>
martin@3794
   566
    </javadoc>
martin@3794
   567
  </target>
martin@3794
   568
martin@2871
   569
  <target name="generate.entities">
martin@2871
   570
    <ant dir="${base.src}" target="generate.entities" inheritAll="true" inheritRefs="true" />
martin@2871
   571
  </target>
asier@43
   572
martin@2871
   573
  <target name="generate.entities.quick">
martin@2871
   574
    <ant dir="${base.src}" target="generate.entities.quick" inheritAll="true" inheritRefs="true" />
martin@2871
   575
  </target>
juanpablo@131
   576
stefan@11851
   577
  <!-- build-internal forking helper -->
stefan@11851
   578
  <target name="generate.entities.quick.forked">
stefan@11851
   579
    <ant dir="${base.src}" target="generate.entities.quick.forked" inheritAll="true" inheritRefs="true" />
stefan@11851
   580
  </target>
stefan@11851
   581
asier@24247
   582
  <target name="compile.test" depends="init">
asier@24247
   583
    <ant dir="${base.src.test}" target="compile.test" inheritAll="true" inheritRefs="true" />
asier@24247
   584
  </target>
asier@24247
   585
  
stefan@5674
   586
  <target name="run.tests" depends="init">
asier@24247
   587
    <ant dir="${base.src.test}" target="run.tests" inheritAll="true" inheritRefs="true" />
martin@3625
   588
  </target>
martin@3625
   589
stefan@5674
   590
  <target name="run.all.tests" depends="init">
asier@24247
   591
    <ant dir="${base.src.test}" target="run.all.tests" inheritAll="true" inheritRefs="true" />
martin@3656
   592
  </target>
martin@3656
   593
priya@6927
   594
  <target name="run.webservice.tests" depends="init">
asier@24247
   595
      <ant dir="${base.src.test}" target="run.webservice.tests" inheritAll="true" inheritRefs="true" />
priya@6927
   596
  </target>
priya@6927
   597
stefan@5674
   598
  <target name="run.quick.tests" depends="init">
asier@24247
   599
    <ant dir="${base.src.test}" target="run.quick.tests" inheritAll="true" inheritRefs="true" />
martin@3625
   600
  </target>
martin@3625
   601
asier@32457
   602
  <target name="run.test" depends="init">
asier@32457
   603
    <ant dir="${base.src.test}" target="run.test" inheritAll="true" inheritRefs="true" />
ivan@3752
   604
  </target>
martin@14869
   605
  
martin@14869
   606
  <target name="run.api.test.model" 
martin@14869
   607
          description="Checks current xml db model and dictionary API for not-allowed changes. Requires stableDBdir parameter">
stefan@9371
   608
    <taskdef name="checkAPI" classname="org.openbravo.ddlutils.task.CheckAPIDistribution">
asier@3808
   609
      <classpath refid="project.class.path" />
asier@3808
   610
    </taskdef>
martin@14869
   611
    <checkAPI driver="${bbdd.driver}" 
martin@14869
   612
                  url="${bbdd.owner.url}" 
martin@14869
   613
                  user="${bbdd.user}" 
martin@14869
   614
                  password="${bbdd.password}" 
martin@14869
   615
                  stableDBdir="${stableDBdir}"
martin@14869
   616
                  testDBdir="${basedir}"
antonio@29768
   617
                  modules="${modules}"
martin@14869
   618
    />    
asier@3808
   619
  </target>
antonio@29768
   620
  
martin@2871
   621
  <target name="compile.src" depends="init">
martin@2871
   622
    <ant dir="${base.src}" target="compile.src" inheritAll="true" inheritRefs="true" />
martin@2871
   623
  </target>
juanpablo@131
   624
martin@2871
   625
  <target name="war" depends="init">
martin@2871
   626
    <ant dir="${base.src}" target="build.war" inheritAll="true" inheritRefs="true" />
martin@2871
   627
  </target>
juanpablo@131
   628
martin@2871
   629
  <target name="core.lib" depends="init">
martin@2871
   630
    <ant dir="${base.src.core}" target="build" inheritAll="true" inheritRefs="true" />
asier@2994
   631
    <copy file="${base.src.core}/lib/openbravo-core.jar" todir="${base.lib}/runtime" failonerror="false" />
martin@2871
   632
  </target>
juanpablo@131
   633
martin@2871
   634
  <target name="wad.lib" depends="init">
martin@2871
   635
    <ant dir="${base.src.wad}" target="build" inheritAll="true" inheritRefs="true" />
martin@2871
   636
  </target>
juanpablo@179
   637
martin@2871
   638
  <target name="trl.lib" depends="init">
martin@2871
   639
    <ant dir="${base.src.trl}" target="build" inheritAll="true" inheritRefs="true" />
martin@2871
   640
  </target>
asier@43
   641
martin@2871
   642
  <target name="database.lib" depends="init">
martin@2871
   643
    <ant dir="${base.src.db}" target="jar" inheritAll="true" inheritRefs="true" />
asier@2995
   644
    <copy file="${base.src.db}/build/lib/dbmanager.jar" todir="${base.db}/lib" failonerror="false" />
martin@2871
   645
  </target>
martin@2345
   646
martin@2871
   647
  <target name="clean" depends="init">
martin@2871
   648
    <ant dir="${base.src}" target="clean" inheritAll="true" inheritRefs="true" />
martin@2871
   649
  </target>
martin@2345
   650
martin@2871
   651
  <target name="trl.clean" depends="init">
martin@2871
   652
    <ant dir="${base.src}" target="trl.clean" inheritAll="true" inheritRefs="true" />
martin@2871
   653
  </target>
martin@2345
   654
stefan@11820
   655
  <target name="trl.remove.unused" depends="init">
stefan@11820
   656
    <ant dir="${base.src}" target="trl.remove.unused" inheritAll="true" inheritRefs="true" />
stefan@11820
   657
  </target>
stefan@11820
   658
martin@2871
   659
  <target name="translate" depends="init">
martin@2871
   660
    <ant dir="${base.src}" target="translate" inheritAll="true" inheritRefs="true" />
martin@2871
   661
  </target>
martin@2686
   662
martin@2871
   663
  <target name="installWebService" depends="init">
martin@2871
   664
    <ant dir="${base.src}" target="installWebService" inheritAll="true" inheritRefs="true">
martin@2871
   665
      <property name="wsdd" value="1" />
martin@2871
   666
    </ant>
martin@2871
   667
  </target>
martin@2871
   668
martin@2871
   669
  <target name="uninstallWebService" depends="init">
martin@2871
   670
    <ant dir="${base.src}" target="uninstallWebService" inheritAll="true" inheritRefs="true" />
martin@2871
   671
  </target>
martin@2871
   672
miguel@16113
   673
  <target name="install.source" depends="init, cleanSubfolders, create.database, wad.lib, trl.lib, compile.complete.deploy">
martin@14869
   674
    <echo message="applying modules" />    
antonio@7535
   675
    <antcall inheritall="true" inheritrefs="true" target="apply.module" />
antonio@5615
   676
augusto@28711
   677
    <antcall inheritall="true" target="import.sample.data" />
martin@14869
   678
    <updatesystemstatus v="RB51"/> 
antonio@5626
   679
    <ant dir="${base.db}" target="setApplied" inheritAll="true" inheritRefs="true" />
martin@2871
   680
martin@2871
   681
    <!--
martin@2686
   682
		<antcall target="validate.database" />
martin@2686
   683
		<antcall target="validate.modules" />
martin@2704
   684
		-->
martin@2871
   685
  </target>
juanpablo@131
   686
stefan@5405
   687
  <target name="create.database" depends="init, core.lib, database.lib">
martin@2871
   688
    <ant dir="${base.db}" antfile="build-create.xml" target="create.database" inheritAll="true" inheritRefs="true" />
martin@2871
   689
    <antcall target="db.apply.modules.sampledata" />
martin@2871
   690
  </target>
antonio@1335
   691
antonio@6897
   692
  <target name="update.database" depends="init, core.lib, database.lib, buildvalidation">
martin@14869
   693
    <updatesystemstatus v="RB12"/>
antonio@4870
   694
    <ant dir="${base.db}" target="update.database.java" inheritAll="true" inheritRefs="true" />
martin@4287
   695
    <antcall target="generate.entities.quick" />
antonio@7535
   696
    <antcall target="apply.module" />
martin@2871
   697
  </target>
asier@1929
   698
stefan@5405
   699
  <target name="create.database.script" depends="init, core.lib">
martin@2871
   700
    <ant dir="${base.db}" target="create.database.script" inheritAll="true" inheritRefs="true" />
martin@2871
   701
  </target>
asier@43
   702
stefan@5405
   703
  <target name="update.database.script" depends="init, core.lib">
martin@2871
   704
    <ant dir="${base.db}" target="update.database.script" inheritAll="true" inheritRefs="true" />
martin@2871
   705
  </target>
adrian@97
   706
antonio@5420
   707
  <target name="export.database" depends="init, core.lib, database.lib, generate.entities.quick">
martin@2871
   708
    <ant dir="${base.db}" target="export.database.structure" inheritAll="true" inheritRefs="true" />
martin@2871
   709
  </target>
adrian@164
   710
stefan@5405
   711
  <target name="export.config.script" depends="init, core.lib">
martin@2871
   712
    <ant dir="${base.db}" target="export.config.script" inheritAll="true" inheritRefs="true" />
martin@2871
   713
  </target>
asier@1929
   714
stefan@20707
   715
  <target name="export.sample.data" depends="init, core.lib">
stefan@20707
   716
    <ant dir="${base.db}" target="export.sample.data" inheritAll="true" inheritRefs="true" />
stefan@20707
   717
  </target>
stefan@20707
   718
stefan@20707
   719
  <target name="import.sample.data" depends="init, core.lib">
stefan@20707
   720
    <ant dir="${base.db}" target="import.sample.data" inheritAll="true" inheritRefs="true" />
stefan@20707
   721
  </target>
stefan@20707
   722
antonio@6108
   723
  <target name="db.apply.modules" if="apply.modules.on.update">
antonio@6074
   724
    <antcall inheritall="true" inheritrefs="true" target="apply.module" />
antonio@6074
   725
  </target>
antonio@6074
   726
martin@2871
   727
  <target name="db.apply.modules.sampledata" if="apply.modules.on.create">
antonio@5077
   728
    <antcall target="generate.entities" />
martin@4287
   729
    <antcall inheritall="true" inheritrefs="true" target="apply.module" />
martin@2871
   730
    <antcall target="import.sample.data" />
martin@2871
   731
  </target>
martin@2345
   732
martin@4287
   733
antonio@8501
   734
  <target name="apply.modules">
martin@4287
   735
asier@3995
   736
    <condition property="apply.modules.complete.compilation.var">
martin@14869
   737
      <istrue value="${apply.modules.complete.compilation}"  />
asier@3995
   738
    </condition>
martin@14869
   739
    
asier@3995
   740
    <condition property="apply.modules.simple.compilation.var">
asier@3995
   741
      <isfalse value="${apply.modules.complete.compilation.var}" />
asier@3995
   742
    </condition>
antonio@7516
   743
martin@14869
   744
    <updatesystemstatus v="RB43"/>
martin@14869
   745
    <antcall target="apply.modules.compile"/>
antonio@7516
   746
antonio@5611
   747
    <ant dir="${base.db}" target="setApplied" inheritAll="true" inheritRefs="true" />
antonio@7516
   748
asier@3995
   749
  </target>
martin@14869
   750
  
martin@4287
   751
  <target name="apply.module.forked">
martin@4287
   752
    <!-- 
martin@4287
   753
    Note: set reinitializeModel to false because otherwise the dal is re-initialized with classes and a model
martin@4287
   754
    which are not in sync (see issue: https://issues.openbravo.com/view.php?id=9376)
martin@4287
   755
    Note: applyModule can also be moved to a java task to fork it (to prevent this from occuring)
martin@4287
   756
    but then no output is visible for the user.
martin@4287
   757
    -->
martin@4287
   758
    <taskdef name="applyModule" classname="org.openbravo.erpCommon.modules.ApplyModuleTask">
martin@4287
   759
      <classpath refid="project.class.path" />
martin@4287
   760
    </taskdef>
antonio@15503
   761
    <applyModule userId="0" adminMode="true" forceRefData="${forceRefData}" propertiesFile="${base.config}/Openbravo.properties"/>
martin@4287
   762
  </target>
martin@14869
   763
  
antonio@7535
   764
  <target name="compile.apply.module" depends="init">
martin@14869
   765
    <updatesystemstatus v="RB31"/>
antonio@7535
   766
    <ant dir="${base.src}" target="compile.apply.module" inheritAll="true" inheritRefs="true" />
antonio@7535
   767
  </target>
martin@14869
   768
  
antonio@7541
   769
  <!--
antonio@7541
   770
  This task uses a special classpath.
antonio@7541
   771
  This classpath is equivalent to the normal project.class.path, except for the fact that that the normal build folder
antonio@7541
   772
  is replaced by the apply.module.build folder, in which the ApplyModule task related classes will be compiled.
antonio@7541
   773
  This is done to workaround the fact that the javac task needs to compile all the related classes when upgrading openbravo
antonio@7541
   774
  and if the normal build folder is included, none of them are recompiled by default unless the whole build directory is specified.
antonio@7541
   775
  -->
antonio@7535
   776
  <target name="apply.module" depends="compile.apply.module">
antonio@6492
   777
    <java classname="org.openbravo.erpCommon.modules.ApplyModuleTask" fork="true" maxmemory="${build.maxmemory}" failonerror="true">
antonio@15503
   778
      <arg line="'${base.src}' '${friendlyWarnings}' '${forceRefData}'" />
asier@34825
   779
      <jvmarg line="${jvm.arg.line}" />
antonio@7543
   780
      <classpath refid="apply.module.runtime.classpath" />
martin@4287
   781
    </java>
martin@14869
   782
   <delete includeEmptyDirs="true"  dir="${build.apply.module}" />
martin@4287
   783
  </target>
martin@14869
   784
  
asier@6221
   785
  <target name="apply.modules.compile" depends="wad.lib">
martin@14869
   786
    <antcall target="apply.modules.compile.simple"/>
martin@14869
   787
    <antcall target="apply.modules.compile.complete"/>
asier@3995
   788
  </target>
martin@14869
   789
  
asier@3995
   790
  <target name="apply.modules.compile.simple" if="apply.modules.simple.compilation.var">
martin@2871
   791
    <antcall target="compile.deploy" />
asier@3995
   792
  </target>
martin@14869
   793
  
asier@3995
   794
  <target name="apply.modules.compile.complete" if="apply.modules.complete.compilation.var">
martin@14869
   795
     <antcall target="compile.complete.deploy" />
martin@2871
   796
  </target>
martin@14869
   797
  
martin@2871
   798
  <!-- 
martin@2345
   799
		apparently this does not overwrite the default catalina_opts, only
martin@2345
   800
		if it is not set will it be set to the value below 
martin@2345
   801
	-->
martin@2871
   802
  <property name="env.CATALINA_OPTS" value="-XX:MaxPermSize=128M" />
martin@2345
   803
martin@2871
   804
  <!-- 
martin@2345
   805
		This task is called from the Openbravo ui, it spawns a java call which again
martin@2345
   806
		calls the restart.tomcat.do task as a spawned task.
martin@2345
   807
	-->
asier@34839
   808
  <target name="tomcat.restart">
martin@2917
   809
    <echo message="Restarting tomcat..." />
martin@2871
   810
    <java classname="org.openbravo.service.system.RestartTomcat" spawn="true" fork="true" maxmemory="${build.maxmemory}">
martin@2871
   811
      <arg line="${base.src}" />
martin@2871
   812
      <classpath refid="project.class.path" />
martin@2871
   813
    </java>
martin@2871
   814
  </target>
martin@2345
   815
martin@2871
   816
  <!--
martin@2345
   817
		Is called by the org.openbravo.service.system.RestartTomcat class.
martin@2345
   818
	-->
asier@34839
   819
  <target name="tomcat.restart.do">
martin@2871
   820
    <echo message="Restarting Tomcat at ${env.CATALINA_HOME}" />
martin@2871
   821
    <java classname="org.apache.catalina.startup.Bootstrap" fork="true">
asier@25200
   822
      <classpath path=":${env.CATALINA_HOME}/bin/bootstrap.jar:${env.CATALINA_HOME}/bin/commons-logging-api.jar:${env.CATALINA_HOME}/bin/tomcat-juli.jar" />
martin@2871
   823
      <jvmarg value="-Dcatalina.home=${env.CATALINA_HOME}" />
martin@2871
   824
      <jvmarg value="-Dcatalina.base=${env.CATALINA_BASE}" />
martin@2871
   825
      <arg line="stop" />
martin@2871
   826
    </java>
martin@2871
   827
    <sleep description="Wait to give tomcat time to stop" seconds="20" />
stefan@9978
   828
stefan@9978
   829
    <!-- if deploy.mode=class this will sync (& delete orphan) jarfiles from WebContent -> tomcat-->
martin@14869
   830
    <antcall target="copy.files.jarsync"/>
stefan@9978
   831
stefan@9978
   832
    <java classname="org.apache.catalina.startup.Bootstrap" fork="true" spawn="true">
asier@25200
   833
      <classpath path=":${env.CATALINA_HOME}/bin/bootstrap.jar:${env.CATALINA_HOME}/bin/commons-logging-api.jar:${env.CATALINA_HOME}/bin/tomcat-juli.jar" />
martin@2871
   834
      <!-- note because CATALINA_OPTS can be multi argument the line attribute has to be used! -->
martin@2871
   835
      <jvmarg line="${env.CATALINA_OPTS}" />
martin@2871
   836
      <jvmarg value="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" />
martin@2871
   837
      <jvmarg value="-Djava.util.logging.config.file=${env.CATALINA_BASE}/conf/logging.properties" />
martin@2871
   838
      <jvmarg value="-Dcatalina.base=${env.CATALINA_BASE}" />
martin@2871
   839
      <jvmarg value="-Dcatalina.home=${env.CATALINA_HOME}" />
martin@2871
   840
      <jvmarg value="-Djava.io.tmpdir=${env.CATALINA_BASE}/temp" />
martin@2871
   841
      <arg line="start" />
martin@2871
   842
    </java>
martin@2871
   843
  </target>
martin@2345
   844
martin@2871
   845
  <target name="tomcat.list">
martin@2871
   846
    <taskdef name="list" classname="org.apache.catalina.ant.ListTask">
martin@2871
   847
      <classpath refid="project.class.path" />
martin@2871
   848
    </taskdef>
martin@2871
   849
    <list url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" />
martin@2871
   850
  </target>
martin@2345
   851
martin@2871
   852
  <target name="deploy.context">
martin@2871
   853
    <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask">
martin@2871
   854
      <classpath refid="project.class.path" />
martin@2871
   855
    </taskdef>
martin@2871
   856
    <taskdef name="deploy.tomcat" classname="org.apache.catalina.ant.DeployTask">
martin@2871
   857
      <classpath refid="project.class.path" />
martin@2871
   858
    </taskdef>
martin@2871
   859
    <taskdef name="start" classname="org.apache.catalina.ant.StartTask">
martin@2871
   860
      <classpath refid="project.class.path" />
martin@2871
   861
    </taskdef>
martin@2345
   862
martin@2871
   863
    <undeploy url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${context.name}" failonerror="false" />
martin@2871
   864
    <deploy.tomcat url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${context.name}" war="file:${base.lib}/${context.name}.war" />
martin@2871
   865
    <start url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${context.name}" />
martin@2871
   866
  </target>
martin@2345
   867
martin@2871
   868
  <target name="generate-wsdd">
martin@2871
   869
    <ant dir="${base.src}" target="generate-wsdd" inheritAll="true" inheritRefs="true" />
martin@2871
   870
  </target>
martin@2345
   871
martin@2871
   872
  <target name="obx.export.database" if="obx.exp.DB">
martin@2871
   873
    <antcall target="export.database" />
martin@2871
   874
  </target>
martin@2345
   875
martin@2871
   876
  <target name="obx.export.config.script" if="obx.exp.CS">
martin@2871
   877
    <antcall target="export.config.script" />
martin@2871
   878
  </target>
martin@2345
   879
asier@19231
   880
  <target name="obx.export.validateModules" if="obx.exp.validate">
asier@19231
   881
    <taskdef name="validateModules" classname="org.openbravo.service.system.SystemValidationTask">
martin@2871
   882
      <classpath refid="project.class.path" />
martin@2871
   883
    </taskdef>
martin@2345
   884
asier@5560
   885
    <taskdef name="WADValidation" classname="org.openbravo.wad.validation.WADValidatorTask">
asier@5533
   886
      <classpath refid="project.class.path" />
asier@5533
   887
    </taskdef>
asier@19231
   888
asier@5533
   889
    <echo message="Validating Module..." />
asier@19231
   890
martin@14869
   891
    <WADValidation propertiesFile="${base.config}/Openbravo.properties"
martin@14869
   892
                   modules="${module}"
martin@14869
   893
                   stoponerror="true"/>
martin@3038
   894
asier@11044
   895
    <validateModules moduleJavaPackage="${module}" failOnError="true" userId="0" adminMode="true" propertiesFile="${base.config}/Openbravo.properties" type="module" />
asier@19231
   896
  </target>
asier@19231
   897
  
asier@19231
   898
  <target name="package.module">
asier@19231
   899
    <taskdef name="extractModule" classname="org.openbravo.erpCommon.modules.ExtractModuleTask">
asier@19231
   900
      <classpath refid="project.class.path" />
asier@19231
   901
    </taskdef>
asier@19231
   902
    
asier@19231
   903
    <antcall target="obx.export.validateModules" />
martin@2871
   904
    <antcall target="obx.export.database" />
martin@2871
   905
    <antcall target="obx.export.config.script" />
juanpablo@2691
   906
asier@19231
   907
    <extractModule moduleName="${module}" 
asier@19231
   908
                   userId="0" 
asier@19231
   909
                   adminMode="true" 
asier@19231
   910
                   propertiesFile="${base.config}/Openbravo.properties" 
asier@19231
   911
                   exportRD="${obx.export.RD}" 
asier@19231
   912
                   addAllDependencies="${obx.export.allDeps}"/>
martin@2871
   913
  </target>
juanpablo@2691
   914
martin@2871
   915
  <target name="diagnostic">
antonio@6886
   916
    <ant dir="src-util/diagnostic" antfile="build-create.xml" target="build" />
antonio@6886
   917
    <ant dir="src-util/diagnostic" target="check.all" />
martin@2871
   918
  </target>
inigo@25249
   919
  
inigo@25249
   920
  <target name="setup.compile">
inigo@25519
   921
	<mkdir dir="build/classes" />
inigo@25525
   922
    <javac srcdir="src/org/openbravo/configuration" destdir="build/classes" fork="true" deprecation="off" encoding="UTF-8" debug="true" debuglevel="lines,vars,source" includeantruntime="false">
inigo@25519
   923
      <classpath refid="project.class.path"/>  
inigo@25519
   924
    </javac>
martin@2871
   925
  </target>
juanpablo@2706
   926
inigo@25525
   927
  <target name="setup" depends="init, setup.compile">
inigo@25519
   928
    <echo message="Launching configuration application..."/>
inigo@25519
   929
    <taskdef name="configurationApp" classname="org.openbravo.configuration.ConfigurationApp">
inigo@25519
   930
      <classpath refid="project.class.path" />
inigo@25519
   931
    </taskdef>
javier@35020
   932
    <configurationApp nonInteractive="${nonInteractive}" acceptLicense="${acceptLicense}"/>
inigo@25249
   933
    </target>
inigo@25249
   934
  
asier@4280
   935
  <target name="package.core" depends="init, set.version.number">
martin@14869
   936
	<property name="tmpdir" value="${java.io.tmpdir}/ob.core${core.rev}" />
martin@14869
   937
   
martin@14869
   938
  	<exec executable="hg" >
martin@14869
   939
  		<arg value="archive"/>
martin@14869
   940
  		<arg value="${tmpdir}"/>
martin@14869
   941
  	</exec>
martin@14869
   942
  	
martin@14869
   943
  	<replaceregexp file="${tmpdir}/src-db/database/sourcedata/AD_MODULE.xml"
martin@14869
   944
                   match="(VERSION.*\[CDATA\[).*\..*\.(.*)(\]\])"
martin@14869
   945
                   replace="\1${core.rev}\3"
martin@14869
   946
                   byline="true"/>
martin@14869
   947
    
martin@14869
   948
    <delete includeEmptyDirs="true">
martin@14869
   949
      <fileset dir="${tmpdir}/modules" includes="**/*" defaultexcludes="no"/>
martin@14869
   950
    </delete>
martin@14869
   951
    
martin@14869
   952
    <zip destfile="${basedir}/core-${core.rev}.obx" basedir="${tmpdir}"/>
martin@14869
   953
    
martin@14869
   954
    <delete dir="${tmpdir}"/>
martin@14868
   955
martin@14869
   956
   </target>
martin@14869
   957
 
martin@14869
   958
  <target name="set.version.number" depends="set.version.from.file, set.version.calculated"/>
martin@14869
   959
  
asier@4279
   960
  <target name="set.version.calculated" if="calculate.core.rev">
martin@14869
   961
    <echo message="calculating core revision..."/>
asier@4279
   962
    <exec executable="hg" outputproperty="hg.idno" failifexecutionfails="false">
martin@14869
   963
      <arg value="id"/>
martin@14869
   964
      <arg value="-n"/>
asier@4279
   965
    </exec>
guillermo@15690
   966
        <propertyfile file="currentRevision.tmp">
guillermo@15690
   967
          <entry key="core.rev" value="3.0.${hg.idno}"/>
guillermo@15690
   968
        </propertyfile>
guillermo@15690
   969
        <replaceregexp file="currentRevision.tmp"
guillermo@15690
   970
                       match="\+"
guillermo@15690
   971
                       replace=""
guillermo@15690
   972
                       byline="true"
guillermo@15690
   973
        />
guillermo@15690
   974
        <loadproperties> 
guillermo@15690
   975
          <file file="currentRevision.tmp"/> 
guillermo@15690
   976
        </loadproperties>
guillermo@15690
   977
        <delete file="currentRevision.tmp"/>
asier@4279
   978
  </target>
martin@14869
   979
  
asier@4279
   980
  <target name="set.version.from.file" if="xml.core.rev">
martin@14869
   981
    <echo message="reading core revision from xml file..."/>
asier@4279
   982
    <loadfile property="core.rev" srcfile="${basedir}/src-db/database/sourcedata/AD_MODULE.xml">
asier@4279
   983
      <filterchain>
asier@4279
   984
        <linecontains>
martin@14869
   985
          <contains value="VERSION>"/>
asier@4279
   986
        </linecontains>
asier@4279
   987
        <tokenfilter>
martin@14869
   988
            <replaceregex pattern="(.*VERSION.*\[CDATA\[)(.*\..*\..*)(\]\].*)" replace="\2"/>
asier@4279
   989
        </tokenfilter>
martin@14869
   990
        <striplinebreaks/>
asier@4279
   991
      </filterchain>
asier@4279
   992
    </loadfile>
asier@4279
   993
  </target>
martin@14869
   994
  
asier@5536
   995
  <target name="validate.wad">
asier@5536
   996
    <ant dir="${base.src}" target="wadvalidation" inheritAll="true" inheritRefs="true" />
asier@5536
   997
  </target>
martin@14869
   998
  
antonio@7476
   999
  <target name="UIrebuild" depends="core.lib">
antonio@7476
  1000
    <java classname="org.openbravo.base.BuildTask" jvm="${env.JAVA_HOME}/bin/java" fork="yes" maxmemory="${build.maxmemory}">
antonio@7476
  1001
      <arg line="'${base.config}/Openbravo.properties' ${logFileName}" />
antonio@7476
  1002
      <classpath>
antonio@7476
  1003
        <pathelement path="${build.core.lib}/openbravo-core.jar" />
javier@34968
  1004
        <pathelement path="${base.lib}/runtime/log4j-1.2-api-2.11.1.jar" />
javier@34968
  1005
        <pathelement path="${base.lib}/runtime/log4j-api-2.11.1.jar" />
javier@34968
  1006
        <pathelement path="${base.lib}/runtime/log4j-core-2.11.1.jar" />
stefan@11940
  1007
        <pathelement path="${base.lib}/runtime/commons-pool-1.5.6.jar" />
stefan@11940
  1008
        <pathelement path="${base.lib}/runtime/commons-dbcp-1.4.jar" />
asier@33773
  1009
        <pathelement path="${base.lib}/runtime/postgresql-42.2.2.jre7.jar" />
antonio@7476
  1010
        <pathelement path="${base.lib}/runtime/ojdbc6.jar" />
stefan@11940
  1011
        <pathelement path="${base.lib}/runtime/commons-collectionsi-3.2.1.jar" />
augusto@24383
  1012
        <pathelement path="${base.lib}/runtime/ant-1.9.2.jar" />
augusto@24383
  1013
        <pathelement path="${base.lib}/runtime/ant-launcher-1.9.2.jar" />
augusto@24383
  1014
        <pathelement path="${base.lib}/runtime/ant-apache-log4j-1.9.2.jar" />
antonio@7476
  1015
        <pathelement path="${base.lib}/runtime/ant-nodeps.jar" />
antonio@7476
  1016
      </classpath>
antonio@7476
  1017
    </java>
antonio@7476
  1018
  </target>
martin@14869
  1019
  
asier@8876
  1020
  <target name="check.module.consistency">
asier@8876
  1021
    <taskdef name="checkConsistency" classname="org.openbravo.erpCommon.modules.CheckLocalConsistency">
asier@8876
  1022
      <classpath refid="project.class.path" />
asier@8876
  1023
    </taskdef>
martin@14869
  1024
    <checkConsistency userId="0" adminMode="true" propertiesFile="${base.config}/Openbravo.properties"/>
asier@8876
  1025
  </target>
martin@14869
  1026
  
miguel@16113
  1027
  <target name="cleanSubfolders" depends="init">
miguel@16113
  1028
      <ant dir="${base.src.core}" target="clean" inheritAll="true" inheritRefs="true" />
miguel@16113
  1029
      <ant dir="${base.src.trl}" target="clean" inheritAll="true" inheritRefs="true" />
miguel@16113
  1030
      <ant dir="${base.src.wad}" target="clean" inheritAll="true" inheritRefs="true" />
asier@16641
  1031
  </target>
asier@16641
  1032
  
asier@16641
  1033
  <target name="activate.instance" depends="init"
asier@16641
  1034
          description="Activates the instance with the provided public key">
asier@16641
  1035
   <taskdef name="activateInstace" classname="org.openbravo.erpCommon.obps.ActivationTask">
asier@16641
  1036
     <classpath refid="project.class.path" />
asier@16641
  1037
   </taskdef>
asier@16641
  1038
   <property name="purpose" value="" />
asier@16641
  1039
   <property name="publicKey" value="" />
asier@16641
  1040
   <property name="publicKeyFile" value="" />
asier@16641
  1041
    
asier@16641
  1042
   <activateInstace purpose="${purpose}"
asier@16641
  1043
                    publicKey="${publicKey}"
asier@16641
  1044
                    publicKeyFile="${publicKeyFile}"
asier@16641
  1045
                    userId="0" 
asier@16641
  1046
                    adminMode="true" 
asier@16641
  1047
                    propertiesFile="${base.config}/Openbravo.properties"/>
asier@16641
  1048
  </target>
miguel@16113
  1049
  
asier@25752
  1050
  <target name="host.name"
asier@25752
  1051
          description="Prints this machine's name. This name can be used to overwrite common Openbravo.properties by machine.name.Openbravo properties file">
asier@25753
  1052
    <mkdir dir="build/classes"/>
asier@25752
  1053
    <javac srcdir="src/org/openbravo/base/session" includes="HostNameTask.java" destdir="build/classes" fork="true" deprecation="off" encoding="UTF-8" debug="true" debuglevel="lines,vars,source" includeantruntime="false">
asier@25752
  1054
      <classpath refid="project.class.path"/>
asier@25752
  1055
    </javac>
asier@25752
  1056
    <taskdef name="hostName" classname="org.openbravo.base.session.HostNameTask">
asier@25752
  1057
      <classpath refid="project.class.path"/>
asier@25752
  1058
    </taskdef>
asier@25752
  1059
    <hostName/>
asier@25752
  1060
  </target>
asier@43
  1061
</project>