Uploaded image for project: 'OFBiz'
  1. OFBiz
  2. OFBIZ-7534

Migrate OFBiz from Apache Ant to Gradle build system

    Details

      Description

      This is a major refactoring task referring to the email thread in which the community voted for the switch after a proposal from the PMC

      The purpose of this JIRA is to achieve the following objectives

      • Fully implement a working compiling system in Gradle that passes all tests
      • Remove all ant and maven build scripts from the system
      • update the documentation of the system to reflect these changes
      1. ANT_GRADLE_COMPARISON.txt
        5 kB
        Taher Alkhateeb
      2. gradle-wrapper.jar
        52 kB
        Taher Alkhateeb
      3. OFBIZ_DEPENDENCIES_AFTER_REFACTORING
        382 kB
        Taher Alkhateeb
      4. OFBIZ_DEPENDENCIES_BEFORE_REFACTORING
        389 kB
        Taher Alkhateeb
      5. OFBIZ-7534.patch
        77 kB
        Taher Alkhateeb
      6. OFBIZ-7534.patch
        71 kB
        Taher Alkhateeb
      7. OFBIZ-7534.patch
        48 kB
        Taher Alkhateeb
      8. OFBIZ-7534.patch
        39 kB
        Taher Alkhateeb
      9. OFBizRemoteJarList.csv
        30 kB
        Gil Portenseigne
      10. OFBizRemoteJarList.csv
        28 kB
        Gil Portenseigne
      11. OFBizRemoteJarList.csv
        28 kB
        Gil Portenseigne
      12. OFBizRemoteJarList.csv
        28 kB
        Gil Portenseigne

        Issue Links

        1.
        Update documentation with respect to implementation of gradle as a replacement of ant Sub-task Closed Jacques Le Roux
         
        2.
        Use Pandoc to integrate our README.MD from repo to Confluence Sub-task Closed Jacques Le Roux
         
        3.
        Have a gradle build file for the content component Sub-task Closed Jacques Le Roux
         
        4.
        Have a gradle build file for the product component Sub-task Closed Jacques Le Roux
         
        5.
        Have a gradle build file for the base component Sub-task Closed Jacques Le Roux
         
        6.
        Have a gradle build file for the catalina component Sub-task Closed Jacques Le Roux
         
        7.
        iterateOverActiveComponents exists twice Sub-task Closed Jacques Le Roux
         
        8.
        Eclipse IDE gets messed up Sub-task Closed Jacques Le Roux
         
        9.
        Move files in gradle folder to a location within base component of the framework stack Sub-task Closed Jacques Le Roux
         
        10.
        remove gradle-wrapper external library Sub-task Closed Jacques Le Roux
         
        11.
        Have a gradle build file for the entity component Sub-task Closed Jacques Le Roux
         
        12.
        use correct provider for xpp3:1.1.4c_7 library Sub-task Closed Jacques Le Roux
         
        13.
        createComponent tasks does not ask for parameters (should we?) Sub-task Closed Jacques Le Roux
         
        14.
        createTenant tasks does not ask for parameters Sub-task Closed Jacques Le Roux
         
        15.
        Fix or remove scripts in tools folder Sub-task Closed Jacques Le Roux
         
        16.
        Remove warnings regarding missing component lib folders Sub-task Closed Jacques Le Roux
         
        17.
        Clean the tools directory Sub-task Closed Jacques Le Roux
         
        18.
        Check if we should fix or remove the POS (hence WebPos?) Sub-task Closed Jacques Le Roux
         
        19.
        OFBiz secured background process does not work on Windows Sub-task Closed Taher Alkhateeb
         
        20.
        Create a (short term) Gradle "cleanAnt" task to remove old build dirs Sub-task Closed Jacques Le Roux
         
        21.
        ./gradle create component duplicates OFBTOOLS permission Sub-task Closed Pierre Smits
         
        22.
        Load the OWASP dependency checker Gradle plugin efficiently Sub-task Closed Taher Alkhateeb
         
        23.
        Shortlist the needed resources to start OFBiz in the sourcesets block in Gradle Sub-task Closed Jacques Le Roux
         
        24.
        Investigate how we could use Gradle GUI to provide users a friendly UX when using plugins Sub-task Closed Jacques Le Roux
         
        25.
        Running or debugging OFBiz inside Eclipse no longer works Sub-task Closed Jacques Le Roux
         

          Activity

          Hide
          taher Taher Alkhateeb added a comment -

          This is a file that shows the old ant commands in comparison with their gradle counterparts. I need feedback to make sure I'm doing things correctly.

          Show
          taher Taher Alkhateeb added a comment - This is a file that shows the old ant commands in comparison with their gradle counterparts. I need feedback to make sure I'm doing things correctly.
          Hide
          pfm.smits Pierre Smits added a comment -

          ./ant load-all-tenants -> ./gradlew loadAllTenants -Preader=seed,ext,demo

          Is also deprecated.

          Show
          pfm.smits Pierre Smits added a comment - ./ant load-all-tenants -> ./gradlew loadAllTenants -Preader=seed,ext,demo Is also deprecated.
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Tasks with a lot of parameters like below will need to be covered by scripts (.sh & . bat), not a big deal

          ./ant create-component            -> ./gradlew createComponent -PcomponentName=custom -PcomponentResourceName=custom -PwebappName=customweb -PbasePermission=OFBTOOLS,CUSTOM_SECURITY
          ./ant create-tenant               -> ./gradlew -PtenantId=DEMO1 -PtenantName=Demo1 -PdomainName=localhost -PdbPlatform=D -PdbIP=127.0.0.1 -PdbUser=someUser -PdbPassword=somePassword
          

          Why do we need the 'ofbiz' parameter in data loading tasks?

          I maybe missed something but how will the "batch" Ant targets be replaced?

          ./ant start-batch                 Not implemented
          ./ant start-batch-secure          Not implemented
          

          I particularly like

          ./gradlew cleanAll loadDemo testInteg
          

          I have just learnt that "ant -p" is "gradle tasks" in Gradle, nice.

          I did no see anything missing

          Thanks!

          Show
          jacques.le.roux Jacques Le Roux added a comment - Tasks with a lot of parameters like below will need to be covered by scripts (.sh & . bat), not a big deal ./ant create-component -> ./gradlew createComponent -PcomponentName=custom -PcomponentResourceName=custom -PwebappName=customweb -PbasePermission=OFBTOOLS,CUSTOM_SECURITY ./ant create-tenant -> ./gradlew -PtenantId=DEMO1 -PtenantName=Demo1 -PdomainName=localhost -PdbPlatform=D -PdbIP=127.0.0.1 -PdbUser=someUser -PdbPassword=somePassword Why do we need the 'ofbiz' parameter in data loading tasks? I maybe missed something but how will the "batch" Ant targets be replaced? ./ant start-batch Not implemented ./ant start-batch-secure Not implemented I particularly like ./gradlew cleanAll loadDemo testInteg I have just learnt that "ant -p" is "gradle tasks" in Gradle, nice. I did no see anything missing Thanks!
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          You mean it should be deprecated, right?

          Show
          jacques.le.roux Jacques Le Roux added a comment - You mean it should be deprecated, right?
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Jacques,

          Thank you for the feedback. To note:

          • I think the start-batch and start-batch-secure should simply be replaced as follows:
            linux: ./gradlew 'ofbiz --start' &
            windows: start gradlew.bat 'ofbiz --start' (I think we might need a flag)
          • No need for shell scripts, I can make "shortcut tasks" but then are there any default values for these parameters? If yes, tell me their values and I will create a task for it.
          • Please note there are two types of tasks as I designed it. The first is OFBiz server tasks, they always start with 'ofbiz' or 'ofbizDebug' or 'ofbizSecure' They are really just a replacement to java -jar ofbiz.jar with the correct JVM arguments. The other set of tasks are called directly by name. I designed it this way so people talk to the server directly. Again, it is very easy to create shortcut tasks, but I just prefer minimalism. If you want shortcut or convenience tasks, I will add them. For example, loadDemo and testInteg are shortcut tasks. loadDemo translates to 'ofbiz --load-data'

          Again, thank you for your feedback, and feel free to pitch in anything else you want.

          Show
          taher Taher Alkhateeb added a comment - Hi Jacques, Thank you for the feedback. To note: I think the start-batch and start-batch-secure should simply be replaced as follows: linux: ./gradlew 'ofbiz --start' & windows: start gradlew.bat 'ofbiz --start' (I think we might need a flag) No need for shell scripts, I can make "shortcut tasks" but then are there any default values for these parameters? If yes, tell me their values and I will create a task for it. Please note there are two types of tasks as I designed it. The first is OFBiz server tasks, they always start with 'ofbiz' or 'ofbizDebug' or 'ofbizSecure' They are really just a replacement to java -jar ofbiz.jar with the correct JVM arguments. The other set of tasks are called directly by name. I designed it this way so people talk to the server directly. Again, it is very easy to create shortcut tasks, but I just prefer minimalism. If you want shortcut or convenience tasks, I will add them. For example, loadDemo and testInteg are shortcut tasks. loadDemo translates to 'ofbiz --load-data' Again, thank you for your feedback, and feel free to pitch in anything else you want.
          Hide
          taher Taher Alkhateeb added a comment -

          This file is not complete, and the classpath issue needs a major change, please do not use this file now, I am just attaching it to show my work so far and to keep a backup copy on JIRA and for you to get a clue what is it that I'm doing. Enjoy!

          Show
          taher Taher Alkhateeb added a comment - This file is not complete, and the classpath issue needs a major change, please do not use this file now, I am just attaching it to show my work so far and to keep a backup copy on JIRA and for you to get a clue what is it that I'm doing. Enjoy!
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Thanks for the explanation, it's clear. We will see for

          windows: start gradlew.bat 'ofbiz --start' (I think we might need a flag)

          I rarely use that on my machine I must say. On VM demo it might need to adapt a bit but nothing big, eg http://svn.apache.org/viewvc/ofbiz/trunk/tools/demo-backup/all-manual-nicely.sh?view=markup

          I don't need nothing else for now

          Show
          jacques.le.roux Jacques Le Roux added a comment - Thanks for the explanation, it's clear. We will see for windows: start gradlew.bat 'ofbiz --start' (I think we might need a flag) I rarely use that on my machine I must say. On VM demo it might need to adapt a bit but nothing big, eg http://svn.apache.org/viewvc/ofbiz/trunk/tools/demo-backup/all-manual-nicely.sh?view=markup I don't need nothing else for now
          Hide
          taher Taher Alkhateeb added a comment -

          Ok, this is my first patch on migrating to gradle. This patch does the following:

          • Add a build.gradle which takes care of everything that build.xml used to do
          • Replace the old README file with a new file called README.md. I used markdown to make easier to read with a markdown viewer. This README.md file serves both as a quick reference and documentation for gradle and how it operates within OFBiz.
          • Move license related stuff to the correct file.

          This is a big patch and requires a LOT of testing. I appreciate all the help I can get.

          Show
          taher Taher Alkhateeb added a comment - Ok, this is my first patch on migrating to gradle. This patch does the following: Add a build.gradle which takes care of everything that build.xml used to do Replace the old README file with a new file called README.md. I used markdown to make easier to read with a markdown viewer. This README.md file serves both as a quick reference and documentation for gradle and how it operates within OFBiz. Move license related stuff to the correct file. This is a big patch and requires a LOT of testing. I appreciate all the help I can get.
          Hide
          taher Taher Alkhateeb added a comment -

          This patch includes the gradle wrapper. Just make sure to copy gradle-wrapper.jar to ./gradle/wrapper/

          Show
          taher Taher Alkhateeb added a comment - This patch includes the gradle wrapper. Just make sure to copy gradle-wrapper.jar to ./gradle/wrapper/
          Hide
          soledad Nicolas Malin added a comment -

          Taher,

          I tested your works and my remarks :

          • Good documentation
          • Gradle is a little disturbing for guy like me that know only ant but I'm sure the learning time is a good invest
          • Tested some command (not all) and it's work fine, the unit test isn't break

          I resume by "Great job".
          I appreciate the readme conversion to markdown

          Show
          soledad Nicolas Malin added a comment - Taher, I tested your works and my remarks : Good documentation Gradle is a little disturbing for guy like me that know only ant but I'm sure the learning time is a good invest Tested some command (not all) and it's work fine, the unit test isn't break I resume by "Great job". I appreciate the readme conversion to markdown
          Hide
          sharan Sharan Foga added a comment -

          Hi Taher

          I decided to have a go at testing this too as I didn't want to miss out on all the fun! Gradle is new to me too so am getting used to the new syntax for building, starting, testing and loading data. It looks to me like things are a lot more controllable via the different options. Everything I've tried is working well.

          The README document is excellent and simplifies the whole process. (It just goes to show what a difference documentation can make!). I think we're going to have to steal some of it and use it for our updated getting started documentation.

          Show
          sharan Sharan Foga added a comment - Hi Taher I decided to have a go at testing this too as I didn't want to miss out on all the fun! Gradle is new to me too so am getting used to the new syntax for building, starting, testing and loading data. It looks to me like things are a lot more controllable via the different options. Everything I've tried is working well. The README document is excellent and simplifies the whole process. (It just goes to show what a difference documentation can make!). I think we're going to have to steal some of it and use it for our updated getting started documentation.
          Hide
          taher Taher Alkhateeb added a comment -

          Ok, attaching a new updated patch which has the following improvements:

          • First, change testInteg to testIntegration. Gradle has cool shortcuts so you can call this task with ./gradlew tI .. so no need to keep names very short
          • Introduced the gradle eclipse plugin. Now the files .plugin and .classpath are automatically generated from gradle with a simple command: ./gradlew eclipse
          • Added two new server command patterns. ofbizBackground and ofbizBackgroundSecure. These two patterns allow you to execute OFBiz commands in the background and to redirect output runtime/logs/console.log. I did this with a hack using the ProcessBuilder API
          • deleted a line that breaks the build from framework/common/src/org/ofbiz/common/email/EmailServices.java. This line calls legacy Java code which is no longer necessary (I think since JDK 1.4)
          • updated the documentation to reflect all the above

          As usual, you need to copy the gradle-wrapper.jar file to gradle/wrapper/ for everything to work correctly in addition to applying the patch

          Show
          taher Taher Alkhateeb added a comment - Ok, attaching a new updated patch which has the following improvements: First, change testInteg to testIntegration. Gradle has cool shortcuts so you can call this task with ./gradlew tI .. so no need to keep names very short Introduced the gradle eclipse plugin. Now the files .plugin and .classpath are automatically generated from gradle with a simple command: ./gradlew eclipse Added two new server command patterns. ofbizBackground and ofbizBackgroundSecure. These two patterns allow you to execute OFBiz commands in the background and to redirect output runtime/logs/console.log. I did this with a hack using the ProcessBuilder API deleted a line that breaks the build from framework/common/src/org/ofbiz/common/email/EmailServices.java. This line calls legacy Java code which is no longer necessary (I think since JDK 1.4) updated the documentation to reflect all the above As usual, you need to copy the gradle-wrapper.jar file to gradle/wrapper/ for everything to work correctly in addition to applying the patch
          Hide
          pfm.smits Pierre Smits added a comment -

          Having applied the latest patch (https://issues.apache.org/jira/secure/attachment/12814684/OFBIZ-7534.patch) to a new check-out of OFBiz trunk, I had the chance to do a review of the various changes implemented.

          Here are (some of) my findings

          • though the intended gradle functions are intended to replace ant, ant functions still exist in the modified check-out.
          • the readme was deleted and a new readme.md was introduced - this seems to be beyond the goal of the issue. Changes could have been implemented in the original readme.
          • With respect to the new readme.md:
            • it states: 'make sure of running the appropriate eclipse command which is mentioned in this file'. Yet where to find it in the long file is forgotten. Including that will increase the UX of OFBiz with respect to the dev part of devops.
            • it stated '`./gradlew cleanAll loadDefault` as the command to execute a preparation phase on unix like machines (like my MacBook Pro). On activating/executing that command in the directory of the new checkout I get:
              -bash: ./gradlew: Permission denied
              

              so somehow my permissions got changed with the implementation of the patch. This is unacceptable without proper explanation. And even with such it is highly questionable.

          So that stopped me from going further in that aspect.

          Looking at the patch file itself I see a lot of references to the external (3rd party) jar files removed from the .classpath file, as per addressing the resolution by the PMC of not having jar files in the repo's of the project anymore.
          Though I applied the whole patch to the check-out, none of the jar files were removed.

          Re: './gradlew ofbiz' - as explained in the readme.md file.
          This is a confusing command/task, as it semantically means nothing. Mutltiple other commands/tasks (e.g. ./gradlew cleanAll) have a meaning in itself. This hasn't.

          More will follow.

          Show
          pfm.smits Pierre Smits added a comment - Having applied the latest patch ( https://issues.apache.org/jira/secure/attachment/12814684/OFBIZ-7534.patch ) to a new check-out of OFBiz trunk, I had the chance to do a review of the various changes implemented. Here are (some of) my findings though the intended gradle functions are intended to replace ant, ant functions still exist in the modified check-out. the readme was deleted and a new readme.md was introduced - this seems to be beyond the goal of the issue. Changes could have been implemented in the original readme. With respect to the new readme.md: it states: 'make sure of running the appropriate eclipse command which is mentioned in this file'. Yet where to find it in the long file is forgotten. Including that will increase the UX of OFBiz with respect to the dev part of devops. it stated '`./gradlew cleanAll loadDefault` as the command to execute a preparation phase on unix like machines (like my MacBook Pro). On activating/executing that command in the directory of the new checkout I get: -bash: ./gradlew: Permission denied so somehow my permissions got changed with the implementation of the patch. This is unacceptable without proper explanation. And even with such it is highly questionable. So that stopped me from going further in that aspect. Looking at the patch file itself I see a lot of references to the external (3rd party) jar files removed from the .classpath file, as per addressing the resolution by the PMC of not having jar files in the repo's of the project anymore. Though I applied the whole patch to the check-out, none of the jar files were removed. Re: './gradlew ofbiz' - as explained in the readme.md file. This is a confusing command/task, as it semantically means nothing. Mutltiple other commands/tasks (e.g. ./gradlew cleanAll) have a meaning in itself. This hasn't. More will follow.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Pierre,

          Thank you for your feedback. in reply:

          • Yes I realize ant is not removed, this will happen in a later commit. This is a big task and I'm taking it in bite sizes, keeping ant as backup before I delete it
          • It's better to use readme.md than readme because of the clarity of the output given that most of the readme is rewritten anyway.
          • A simple find would suffice to find the eclipse command, anyway, no problem I can make a reference to it
          • Your permission problem is there because I'm attaching a patch, not applying a commit. Patches do not preserve permissions. This issue will be resolved once a commit is pushed to trunk. You don't need to "stop" because of simple file permission issues.
          • I did not remove the jars despite removing the .classpath file just to show that it works. There is a simple command ./gradlew eclipse which immediately generates the files you need
          • the ./gradlew ofbiz command is named like that because this is a rule, not a fixed command. You can read more on gradle rules, but in essence, ./gradlw ofbiz is comparable to java -jar ofbiz.jar ... it's a gateway to all OFBiz commands.
          Show
          taher Taher Alkhateeb added a comment - Hi Pierre, Thank you for your feedback. in reply: Yes I realize ant is not removed, this will happen in a later commit. This is a big task and I'm taking it in bite sizes, keeping ant as backup before I delete it It's better to use readme.md than readme because of the clarity of the output given that most of the readme is rewritten anyway. A simple find would suffice to find the eclipse command, anyway, no problem I can make a reference to it Your permission problem is there because I'm attaching a patch, not applying a commit. Patches do not preserve permissions. This issue will be resolved once a commit is pushed to trunk. You don't need to "stop" because of simple file permission issues. I did not remove the jars despite removing the .classpath file just to show that it works. There is a simple command ./gradlew eclipse which immediately generates the files you need the ./gradlew ofbiz command is named like that because this is a rule, not a fixed command. You can read more on gradle rules, but in essence, ./gradlw ofbiz is comparable to java -jar ofbiz.jar ... it's a gateway to all OFBiz commands.
          Hide
          pfm.smits Pierre Smits added a comment - - edited

          So there is a chicken-egg situation here (triggered by this permissions aspect): no one can assess the impact of the change without some kind of extra work in their test environments and you can't preserve permissions with patches. I would say that is a fail..

          The way to get around this, and save you (and others) a lot of work, is to commit your changes to a separate dev branch. The impact is large enough. And you - as a privileged contributor - have the mandate to create one. Those who want to test your changes then just have to execute an update of the check-out to get the latest revision. On the plus side there is then also the aspect of being able to reference revisions when it comes to reporting findings.

          Show
          pfm.smits Pierre Smits added a comment - - edited So there is a chicken-egg situation here (triggered by this permissions aspect): no one can assess the impact of the change without some kind of extra work in their test environments and you can't preserve permissions with patches. I would say that is a fail.. The way to get around this, and save you (and others) a lot of work, is to commit your changes to a separate dev branch. The impact is large enough. And you - as a privileged contributor - have the mandate to create one. Those who want to test your changes then just have to execute an update of the check-out to get the latest revision. On the plus side there is then also the aspect of being able to reference revisions when it comes to reporting findings.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Pierre,

          You are making a simple problem into a big one. chmod +x gradlew ... that's it! no need for branch or checking or anything else, it's a simple file permission. Set it to executable and the whole issue is done.

          Show
          taher Taher Alkhateeb added a comment - Hi Pierre, You are making a simple problem into a big one. chmod +x gradlew ... that's it! no need for branch or checking or anything else, it's a simple file permission. Set it to executable and the whole issue is done.
          Hide
          jacopoc Jacopo Cappellato added a comment -

          Thank you Pierre for the feedback and thank you Taher for all the work you are doing in designing, implementing and supporting contributors in their tests, really amazing.
          I agree that a feature branch would have helped here, especially in the early phases of this effort, but the good news is that the implementation is mostly done and we should be able to commit Taher's changes to trunk very soon: after that it will be easier to play with these changes.

          Show
          jacopoc Jacopo Cappellato added a comment - Thank you Pierre for the feedback and thank you Taher for all the work you are doing in designing, implementing and supporting contributors in their tests, really amazing. I agree that a feature branch would have helped here, especially in the early phases of this effort, but the good news is that the implementation is mostly done and we should be able to commit Taher's changes to trunk very soon: after that it will be easier to play with these changes.
          Hide
          taher Taher Alkhateeb added a comment - - edited

          Okay, doing a bit of research, the listing of the JARs and their count in each component is listed below.

          I would appreciate it if you can save me some time by pointing out which ones are not necessary and the code would compile without them.

          Component Count of Jars
          base 94
          solr 43
          birt 34
          catalina 13
          service 10
          cmssite 6
          pos 5
          ebaystore 4
          lucene 3
          webapp 3
          testtools 2
          entity 2
          content 2
          product 2
          start 1
          demo-backup 1
          ldap 1
          geronimo 1
          security 1
          googlecheckout 1
          Total 229

          The detailed listing of the Jars:

          component_group component_name JarFile
          applications content ./applications/content/lib/dom4j-1.6.1.jar
          applications content ./applications/content/lib/poi-3.13-20150929.jar
          applications product ./applications/product/lib/watermarker-0.0.4.jar
          applications product ./applications/product/lib/dozer-4.2.1.jar
          framework base ./framework/base/lib/scripting/bsh-2.0b4.jar
          framework base ./framework/base/lib/scripting/antlr-2.7.6.jar
          framework base ./framework/base/lib/scripting/jython-nooro.jar
          framework base ./framework/base/lib/scripting/jakarta-oro-2.0.8.jar
          framework base ./framework/base/lib/scripting/bsf-2.4.0.jar
          framework base ./framework/base/lib/scripting/asm-3.2.jar
          framework base ./framework/base/lib/scripting/groovy-all-2.4.5.jar
          framework base ./framework/base/lib/batik-all-1.8.jar
          framework base ./framework/base/lib/jdom-1.1.jar
          framework base ./framework/base/lib/ant-1.9.0-ant.jar
          framework base ./framework/base/lib/fop-2.1.jar
          framework base ./framework/base/lib/juel-impl-2.2.7.jar
          framework base ./framework/base/lib/log4j-nosql-2.3.jar
          framework base ./framework/base/lib/ant/ant-1.9.0-ant-apache-bsf.jar
          framework base ./framework/base/lib/ant/ant-contrib-1.0b3.jar
          framework base ./framework/base/lib/commons/commons-io-2.4.jar
          framework base ./framework/base/lib/commons/commons-logging-1.2.jar
          framework base ./framework/base/lib/commons/commons-lang-2.6.jar
          framework base ./framework/base/lib/commons/commons-compress-1.11.jar
          framework base ./framework/base/lib/commons/commons-pool2-2.3.jar
          framework base ./framework/base/lib/commons/commons-el-1.0.jar
          framework base ./framework/base/lib/commons/commons-codec-1.10.jar
          framework base ./framework/base/lib/commons/commons-fileupload-1.3.1.jar
          framework base ./framework/base/lib/commons/commons-csv-1.1.jar
          framework base ./framework/base/lib/commons/commons-net-3.3.jar
          framework base ./framework/base/lib/commons/commons-collections4-4.1.jar
          framework base ./framework/base/lib/commons/commons-beanutils-core-1.8.3.jar
          framework base ./framework/base/lib/commons/commons-validator-1.4.1.jar
          framework base ./framework/base/lib/xml-apis-ext-1.3.04.jar
          framework base ./framework/base/lib/xml-apis-1.4.01.jar
          framework base ./framework/base/lib/log4j-1.2-api-2.3.jar
          framework base ./framework/base/lib/log4j-slf4j-impl-2.3.jar
          framework base ./framework/base/lib/ant-1.9.0-ant-junit.jar
          framework base ./framework/base/lib/icu4j-57_1.jar
          framework base ./framework/base/lib/resolver-2.9.1.jar
          framework base ./framework/base/lib/barcode4j-2.1-barcode4j-fop-ext-complete.jar
          framework base ./framework/base/lib/xpp3-1.1.4c.jar
          framework base ./framework/base/lib/log4j-core-2.3.jar
          framework base ./framework/base/lib/junit-dep-4.10.jar
          framework base ./framework/base/lib/freemarker-2.3.24.jar
          framework base ./framework/base/lib/tika-parsers-1.12.jar
          framework base ./framework/base/lib/xmlrpc-client-3.1.2.jar
          framework base ./framework/base/lib/clhm-release-1.0-lru.jar
          framework base ./framework/base/lib/jpim-0.1.jar
          framework base ./framework/base/lib/xalan-2.7.2.jar
          framework base ./framework/base/lib/shiro-core-1.2.5.jar
          framework base ./framework/base/lib/mail-1.5.1.jar
          framework base ./framework/base/lib/pdfbox-1.8.12.jar
          framework base ./framework/base/lib/xmlrpc-common-3.1.2.jar
          framework base ./framework/base/lib/avalon-framework-4.2.0.jar
          framework base ./framework/base/lib/jempbox-1.8.11.jar
          framework base ./framework/base/lib/nekohtml-1.9.16.jar
          framework base ./framework/base/lib/jackson-core-2.4.2.jar
          framework base ./framework/base/lib/owasp-java-html-sanitizer-r239.jar
          framework base ./framework/base/lib/serializer-2.9.1.jar
          framework base ./framework/base/lib/httpclient-cache-4.4.1.jar
          framework base ./framework/base/lib/ical4j-1.0-rc2.jar
          framework base ./framework/base/lib/ws-commons-java5-1.0.1.jar
          framework base ./framework/base/lib/fontbox-1.8.11.jar
          framework base ./framework/base/lib/esapi-2.1.0.jar
          framework base ./framework/base/lib/xercesImpl-2.11.0.jar
          framework base ./framework/base/lib/xmlrpc-server-3.1.2.jar
          framework base ./framework/base/lib/javolution-5.4.3.jar
          framework base ./framework/base/lib/jdbm-1.0-SNAPSHOT.jar
          framework base ./framework/base/lib/bsh-engine-modified.jar
          framework base ./framework/base/lib/j2eespecs/geronimo-jaxrpc_1.1_spec-1.0.jar
          framework base ./framework/base/lib/j2eespecs/geronimo-saaj_1.3_spec-1.1.jar
          framework base ./framework/base/lib/j2eespecs/geronimo-j2ee-connector_1.5_spec-2.0.0.jar
          framework base ./framework/base/lib/j2eespecs/jsp-api-2.3.jar
          framework base ./framework/base/lib/j2eespecs/geronimo-jaxr_1.0_spec-1.0.jar
          framework base ./framework/base/lib/j2eespecs/geronimo-activation_1.0.2_spec-1.0.jar
          framework base ./framework/base/lib/j2eespecs/geronimo-jta_1.1_spec-1.1.1.jar
          framework base ./framework/base/lib/j2eespecs/annotations-api-3.0.jar
          framework base ./framework/base/lib/j2eespecs/el-api-3.0.jar
          framework base ./framework/base/lib/j2eespecs/geronimo-jms_1.1_spec-1.1.1.jar
          framework base ./framework/base/lib/j2eespecs/servlet-api-3.1.jar
          framework base ./framework/base/lib/jce-jdk13-154.jar
          framework base ./framework/base/lib/xstream-1.4.9.jar
          framework base ./framework/base/lib/juel-spi-2.2.7.jar
          framework base ./framework/base/lib/hamcrest-all-1.2.jar
          framework base ./framework/base/lib/ant-1.9.0-ant-launcher.jar
          framework base ./framework/base/lib/jackson-annotations-2.4.0.jar
          framework base ./framework/base/lib/ivy-2.2.0.jar
          framework base ./framework/base/lib/ws-commons-util-1.0.2.jar
          framework base ./framework/base/lib/tika-core-1.12.jar
          framework base ./framework/base/lib/httpunit-1.7.jar
          framework base ./framework/base/lib/httpclient-4.4.1.jar
          framework base ./framework/base/lib/httpcore-4.4.1.jar
          framework base ./framework/base/lib/guava-14.0.1.jar
          framework base ./framework/base/lib/zxing-core-3.2.0.jar
          framework base ./framework/base/lib/jackson-databind-2.4.2.jar
          framework base ./framework/base/lib/slf4j-api-1.6.4.jar
          framework base ./framework/base/lib/xmlgraphics-commons-2.1.jar
          framework base ./framework/base/lib/log4j-api-2.3.jar
          framework catalina ./framework/catalina/lib/tomcat-extras-8.0.33-tomcat-juli-adapters.jar
          framework catalina ./framework/catalina/lib/tomcat-8.0.33-tomcat-coyote.jar
          framework catalina ./framework/catalina/lib/tomcat-8.0.33-catalina-tribes.jar
          framework catalina ./framework/catalina/lib/tomcat-8.0.33-catalina-ha.jar
          framework catalina ./framework/catalina/lib/tomcat-8.0.33-jasper.jar
          framework catalina ./framework/catalina/lib/tomcat-8.0.33-tomcat-api.jar
          framework catalina ./framework/catalina/lib/tomcat-8.0.33-catalina.jar
          framework catalina ./framework/catalina/lib/tomcat-embed-websocket-8.0.33.jar
          framework catalina ./framework/catalina/lib/tomcat-8.0.33-tomcat-jni.jar
          framework catalina ./framework/catalina/lib/tomcat-extras-8.0.33-tomcat-juli.jar
          framework catalina ./framework/catalina/lib/tomcat-8.0.33-tomcat-util-scan.jar
          framework catalina ./framework/catalina/lib/tomcat-8.0.33-tomcat-util.jar
          framework catalina ./framework/catalina/lib/ecj-4.5.jar
          framework entity ./framework/entity/lib/commons-dbcp2-2.1.jar
          framework entity ./framework/entity/lib/jdbc/derby-10.11.1.1.jar
          framework geronimo ./framework/geronimo/lib/geronimo-transaction-3.1.1.jar
          framework service ./framework/service/lib/wsdl4j-1.6.2.jar
          framework service ./framework/service/lib/axiom-api-1.2.17.jar
          framework service ./framework/service/lib/axis2-adb-1.7.1.jar
          framework service ./framework/service/lib/xmlschema-core-2.2.1.jar
          framework service ./framework/service/lib/axis2-transport-local-1.7.1.jar
          framework service ./framework/service/lib/axiom-impl-1.2.17.jar
          framework service ./framework/service/lib/axis2-kernel-1.7.1.jar
          framework service ./framework/service/lib/axis2-transport-http-1.7.1.jar
          framework service ./framework/service/lib/neethi-3.0.3.jar
          framework service ./framework/service/lib/woden-core-1.0M10.jar
          framework start ./framework/start/lib/commons-cli-1.3.1.jar
          framework testtools ./framework/testtools/lib/spring-test-4.2.3.jar
          framework testtools ./framework/testtools/lib/spring-core-4.2.3.jar
          framework webapp ./framework/webapp/lib/rome-0.9.jar
          framework webapp ./framework/webapp/lib/ezmorph-0.9.1.jar
          framework webapp ./framework/webapp/lib/iText-2.1.7.jar
          specialpurpose birt ./specialpurpose/birt/lib/commons-discovery-0.5.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.equinox.preferences_3.5.100.v20130422-1538.jar
          specialpurpose birt ./specialpurpose/birt/lib/axis-ant-1.4.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.emf.ecore_2.9.1.v20130827-0309.jar
          specialpurpose birt ./specialpurpose/birt/lib/flute.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.emf_2.6.0.v20130902-0605.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.emf.common_2.9.1.v20130827-0309.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.filesystem_1.4.0.v20130514-1240.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.apache.xml.serializer_2.7.1.v201005080400.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.equinox.app_1.3.100.v20130327-1442.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.emf.ecore.change_2.9.0.v20130827-0309.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.birt.runtime_4.3.1.v20130918-1142.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.emf.ecore.xmi_2.9.1.v20130827-0309.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.jobs_3.5.300.v20130429-1813.jar
          specialpurpose birt ./specialpurpose/birt/lib/saaj.jar
          specialpurpose birt ./specialpurpose/birt/lib/viewservlets.jar
          specialpurpose birt ./specialpurpose/birt/lib/axis-1.4.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.equinox.registry_3.5.301.v20130717-1549.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.w3c.dom.smil_1.0.0.v200806040011.jar
          specialpurpose birt ./specialpurpose/birt/lib/jaxrpc.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.apache.xml.resolver_1.2.0.v201005080400.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.equinox.common_3.6.200.v20130402-1505.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.osgi.services_3.3.100.v20130513-1956.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.expressions_3.4.500.v20130515-1343.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.contenttype_3.4.200.v20130326-1255.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.update.configurator_3.3.200.v20130326-1319.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.w3c.dom.svg_1.1.0.v201011041433.jar
          specialpurpose birt ./specialpurpose/birt/lib/Tidy.jar
          specialpurpose birt ./specialpurpose/birt/lib/js.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.runtime_3.9.0.v20130326-1255.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.datatools.connectivity.oda_3.4.1.v201308160907.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.w3c.css.sac_1.3.0.v200805290154.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.osgi_3.9.1.v20130814-1242.jar
          specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.resources_3.8.101.v20130717-0806.jar
          specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/webhelpindexer.jar
          specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/tagsoup-1.2.1.jar
          specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/lucene-analyzers-3.0.0.jar
          specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/xalan-2.7.2.jar
          specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/saxon65.jar
          specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/lucene-core-3.0.0.jar
          specialpurpose ebaystore ./specialpurpose/ebaystore/lib/helper.jar
          specialpurpose ebaystore ./specialpurpose/ebaystore/lib/attributes.jar
          specialpurpose ebaystore ./specialpurpose/ebaystore/lib/ebaysdkcore.jar
          specialpurpose ebaystore ./specialpurpose/ebaystore/lib/ebaycalls.jar
          specialpurpose googlecheckout ./specialpurpose/googlecheckout/lib/checkout-sdk-0.8.8.jar
          specialpurpose ldap ./specialpurpose/ldap/lib/cas-server-core-3.3.jar
          specialpurpose lucene ./specialpurpose/lucene/lib/lucene-core-5.3.1.jar
          specialpurpose lucene ./specialpurpose/lucene/lib/lucene-queryparser-5.3.1.jar
          specialpurpose lucene ./specialpurpose/lucene/lib/lucene-analyzers-common-5.3.1.jar
          specialpurpose pos ./specialpurpose/pos/lib/jpos18-controls.jar
          specialpurpose pos ./specialpurpose/pos/lib/XuiCoreSwing-v3.2rc2b.jar
          specialpurpose pos ./specialpurpose/pos/lib/jcl.jar
          specialpurpose pos ./specialpurpose/pos/lib/looks-2.0.2.jar
          specialpurpose pos ./specialpurpose/pos/lib/XuiOptional-v3.2rc2b.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/hadoop-annotations-2.7.2.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/concurrentlinkedhashmap-lru-1.2.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/stax2-api-3.1.4.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/hadoop-auth-2.7.2.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/asm-commons-4.1.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/antlr-runtime-3.5.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/jackson-dataformat-smile-2.5.4.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-sandbox-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-analyzers-kuromoji-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-grouping-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/asm-4.1.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-backward-codecs-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/woodstox-core-asl-4.4.1.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/t-digest-3.1.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/commons-configuration-1.6.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-analyzers-phonetic-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/commons-cli-1.2.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/hppc-0.5.2.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/protobuf-java-2.5.0.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-expressions-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/htrace-core-3.0.4.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/commons-exec-1.3.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/hadoop-common-2.7.2.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/jackson-core-2.5.4.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-memory-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/hadoop-hdfs-2.7.2.jar
          specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/wstx-asl-3.2.7.jar
          specialpurpose solr ./specialpurpose/solr/lib/compile/solr-core-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/lib/compile/solr-solrj-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/org.restlet-2.3.0.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/org.restlet.ext.servlet-2.3.0.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/zookeeper-3.4.6.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-join-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/joda-time-2.2.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-highlighter-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-codecs-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/noggit-0.6.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-queries-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-spatial-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-suggest-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/spatial4j-0.4.1.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-misc-5.3.1.jar
          specialpurpose solr ./specialpurpose/solr/lib/runtime/httpmime-4.4.1.jar
          tools demo-backup ./tools/demo-backup/contrast-rO0.jar
          tools security ./tools/security/notsoserial/notsoserial-1.0-SNAPSHOT.jar
          Show
          taher Taher Alkhateeb added a comment - - edited Okay, doing a bit of research, the listing of the JARs and their count in each component is listed below. I would appreciate it if you can save me some time by pointing out which ones are not necessary and the code would compile without them. Component Count of Jars base 94 solr 43 birt 34 catalina 13 service 10 cmssite 6 pos 5 ebaystore 4 lucene 3 webapp 3 testtools 2 entity 2 content 2 product 2 start 1 demo-backup 1 ldap 1 geronimo 1 security 1 googlecheckout 1 Total 229 The detailed listing of the Jars: component_group component_name JarFile applications content ./applications/content/lib/dom4j-1.6.1.jar applications content ./applications/content/lib/poi-3.13-20150929.jar applications product ./applications/product/lib/watermarker-0.0.4.jar applications product ./applications/product/lib/dozer-4.2.1.jar framework base ./framework/base/lib/scripting/bsh-2.0b4.jar framework base ./framework/base/lib/scripting/antlr-2.7.6.jar framework base ./framework/base/lib/scripting/jython-nooro.jar framework base ./framework/base/lib/scripting/jakarta-oro-2.0.8.jar framework base ./framework/base/lib/scripting/bsf-2.4.0.jar framework base ./framework/base/lib/scripting/asm-3.2.jar framework base ./framework/base/lib/scripting/groovy-all-2.4.5.jar framework base ./framework/base/lib/batik-all-1.8.jar framework base ./framework/base/lib/jdom-1.1.jar framework base ./framework/base/lib/ant-1.9.0-ant.jar framework base ./framework/base/lib/fop-2.1.jar framework base ./framework/base/lib/juel-impl-2.2.7.jar framework base ./framework/base/lib/log4j-nosql-2.3.jar framework base ./framework/base/lib/ant/ant-1.9.0-ant-apache-bsf.jar framework base ./framework/base/lib/ant/ant-contrib-1.0b3.jar framework base ./framework/base/lib/commons/commons-io-2.4.jar framework base ./framework/base/lib/commons/commons-logging-1.2.jar framework base ./framework/base/lib/commons/commons-lang-2.6.jar framework base ./framework/base/lib/commons/commons-compress-1.11.jar framework base ./framework/base/lib/commons/commons-pool2-2.3.jar framework base ./framework/base/lib/commons/commons-el-1.0.jar framework base ./framework/base/lib/commons/commons-codec-1.10.jar framework base ./framework/base/lib/commons/commons-fileupload-1.3.1.jar framework base ./framework/base/lib/commons/commons-csv-1.1.jar framework base ./framework/base/lib/commons/commons-net-3.3.jar framework base ./framework/base/lib/commons/commons-collections4-4.1.jar framework base ./framework/base/lib/commons/commons-beanutils-core-1.8.3.jar framework base ./framework/base/lib/commons/commons-validator-1.4.1.jar framework base ./framework/base/lib/xml-apis-ext-1.3.04.jar framework base ./framework/base/lib/xml-apis-1.4.01.jar framework base ./framework/base/lib/log4j-1.2-api-2.3.jar framework base ./framework/base/lib/log4j-slf4j-impl-2.3.jar framework base ./framework/base/lib/ant-1.9.0-ant-junit.jar framework base ./framework/base/lib/icu4j-57_1.jar framework base ./framework/base/lib/resolver-2.9.1.jar framework base ./framework/base/lib/barcode4j-2.1-barcode4j-fop-ext-complete.jar framework base ./framework/base/lib/xpp3-1.1.4c.jar framework base ./framework/base/lib/log4j-core-2.3.jar framework base ./framework/base/lib/junit-dep-4.10.jar framework base ./framework/base/lib/freemarker-2.3.24.jar framework base ./framework/base/lib/tika-parsers-1.12.jar framework base ./framework/base/lib/xmlrpc-client-3.1.2.jar framework base ./framework/base/lib/clhm-release-1.0-lru.jar framework base ./framework/base/lib/jpim-0.1.jar framework base ./framework/base/lib/xalan-2.7.2.jar framework base ./framework/base/lib/shiro-core-1.2.5.jar framework base ./framework/base/lib/mail-1.5.1.jar framework base ./framework/base/lib/pdfbox-1.8.12.jar framework base ./framework/base/lib/xmlrpc-common-3.1.2.jar framework base ./framework/base/lib/avalon-framework-4.2.0.jar framework base ./framework/base/lib/jempbox-1.8.11.jar framework base ./framework/base/lib/nekohtml-1.9.16.jar framework base ./framework/base/lib/jackson-core-2.4.2.jar framework base ./framework/base/lib/owasp-java-html-sanitizer-r239.jar framework base ./framework/base/lib/serializer-2.9.1.jar framework base ./framework/base/lib/httpclient-cache-4.4.1.jar framework base ./framework/base/lib/ical4j-1.0-rc2.jar framework base ./framework/base/lib/ws-commons-java5-1.0.1.jar framework base ./framework/base/lib/fontbox-1.8.11.jar framework base ./framework/base/lib/esapi-2.1.0.jar framework base ./framework/base/lib/xercesImpl-2.11.0.jar framework base ./framework/base/lib/xmlrpc-server-3.1.2.jar framework base ./framework/base/lib/javolution-5.4.3.jar framework base ./framework/base/lib/jdbm-1.0-SNAPSHOT.jar framework base ./framework/base/lib/bsh-engine-modified.jar framework base ./framework/base/lib/j2eespecs/geronimo-jaxrpc_1.1_spec-1.0.jar framework base ./framework/base/lib/j2eespecs/geronimo-saaj_1.3_spec-1.1.jar framework base ./framework/base/lib/j2eespecs/geronimo-j2ee-connector_1.5_spec-2.0.0.jar framework base ./framework/base/lib/j2eespecs/jsp-api-2.3.jar framework base ./framework/base/lib/j2eespecs/geronimo-jaxr_1.0_spec-1.0.jar framework base ./framework/base/lib/j2eespecs/geronimo-activation_1.0.2_spec-1.0.jar framework base ./framework/base/lib/j2eespecs/geronimo-jta_1.1_spec-1.1.1.jar framework base ./framework/base/lib/j2eespecs/annotations-api-3.0.jar framework base ./framework/base/lib/j2eespecs/el-api-3.0.jar framework base ./framework/base/lib/j2eespecs/geronimo-jms_1.1_spec-1.1.1.jar framework base ./framework/base/lib/j2eespecs/servlet-api-3.1.jar framework base ./framework/base/lib/jce-jdk13-154.jar framework base ./framework/base/lib/xstream-1.4.9.jar framework base ./framework/base/lib/juel-spi-2.2.7.jar framework base ./framework/base/lib/hamcrest-all-1.2.jar framework base ./framework/base/lib/ant-1.9.0-ant-launcher.jar framework base ./framework/base/lib/jackson-annotations-2.4.0.jar framework base ./framework/base/lib/ivy-2.2.0.jar framework base ./framework/base/lib/ws-commons-util-1.0.2.jar framework base ./framework/base/lib/tika-core-1.12.jar framework base ./framework/base/lib/httpunit-1.7.jar framework base ./framework/base/lib/httpclient-4.4.1.jar framework base ./framework/base/lib/httpcore-4.4.1.jar framework base ./framework/base/lib/guava-14.0.1.jar framework base ./framework/base/lib/zxing-core-3.2.0.jar framework base ./framework/base/lib/jackson-databind-2.4.2.jar framework base ./framework/base/lib/slf4j-api-1.6.4.jar framework base ./framework/base/lib/xmlgraphics-commons-2.1.jar framework base ./framework/base/lib/log4j-api-2.3.jar framework catalina ./framework/catalina/lib/tomcat-extras-8.0.33-tomcat-juli-adapters.jar framework catalina ./framework/catalina/lib/tomcat-8.0.33-tomcat-coyote.jar framework catalina ./framework/catalina/lib/tomcat-8.0.33-catalina-tribes.jar framework catalina ./framework/catalina/lib/tomcat-8.0.33-catalina-ha.jar framework catalina ./framework/catalina/lib/tomcat-8.0.33-jasper.jar framework catalina ./framework/catalina/lib/tomcat-8.0.33-tomcat-api.jar framework catalina ./framework/catalina/lib/tomcat-8.0.33-catalina.jar framework catalina ./framework/catalina/lib/tomcat-embed-websocket-8.0.33.jar framework catalina ./framework/catalina/lib/tomcat-8.0.33-tomcat-jni.jar framework catalina ./framework/catalina/lib/tomcat-extras-8.0.33-tomcat-juli.jar framework catalina ./framework/catalina/lib/tomcat-8.0.33-tomcat-util-scan.jar framework catalina ./framework/catalina/lib/tomcat-8.0.33-tomcat-util.jar framework catalina ./framework/catalina/lib/ecj-4.5.jar framework entity ./framework/entity/lib/commons-dbcp2-2.1.jar framework entity ./framework/entity/lib/jdbc/derby-10.11.1.1.jar framework geronimo ./framework/geronimo/lib/geronimo-transaction-3.1.1.jar framework service ./framework/service/lib/wsdl4j-1.6.2.jar framework service ./framework/service/lib/axiom-api-1.2.17.jar framework service ./framework/service/lib/axis2-adb-1.7.1.jar framework service ./framework/service/lib/xmlschema-core-2.2.1.jar framework service ./framework/service/lib/axis2-transport-local-1.7.1.jar framework service ./framework/service/lib/axiom-impl-1.2.17.jar framework service ./framework/service/lib/axis2-kernel-1.7.1.jar framework service ./framework/service/lib/axis2-transport-http-1.7.1.jar framework service ./framework/service/lib/neethi-3.0.3.jar framework service ./framework/service/lib/woden-core-1.0M10.jar framework start ./framework/start/lib/commons-cli-1.3.1.jar framework testtools ./framework/testtools/lib/spring-test-4.2.3.jar framework testtools ./framework/testtools/lib/spring-core-4.2.3.jar framework webapp ./framework/webapp/lib/rome-0.9.jar framework webapp ./framework/webapp/lib/ezmorph-0.9.1.jar framework webapp ./framework/webapp/lib/iText-2.1.7.jar specialpurpose birt ./specialpurpose/birt/lib/commons-discovery-0.5.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.equinox.preferences_3.5.100.v20130422-1538.jar specialpurpose birt ./specialpurpose/birt/lib/axis-ant-1.4.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.emf.ecore_2.9.1.v20130827-0309.jar specialpurpose birt ./specialpurpose/birt/lib/flute.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.emf_2.6.0.v20130902-0605.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.emf.common_2.9.1.v20130827-0309.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.filesystem_1.4.0.v20130514-1240.jar specialpurpose birt ./specialpurpose/birt/lib/org.apache.xml.serializer_2.7.1.v201005080400.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.equinox.app_1.3.100.v20130327-1442.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.emf.ecore.change_2.9.0.v20130827-0309.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.birt.runtime_4.3.1.v20130918-1142.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.emf.ecore.xmi_2.9.1.v20130827-0309.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.jobs_3.5.300.v20130429-1813.jar specialpurpose birt ./specialpurpose/birt/lib/saaj.jar specialpurpose birt ./specialpurpose/birt/lib/viewservlets.jar specialpurpose birt ./specialpurpose/birt/lib/axis-1.4.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.equinox.registry_3.5.301.v20130717-1549.jar specialpurpose birt ./specialpurpose/birt/lib/org.w3c.dom.smil_1.0.0.v200806040011.jar specialpurpose birt ./specialpurpose/birt/lib/jaxrpc.jar specialpurpose birt ./specialpurpose/birt/lib/org.apache.xml.resolver_1.2.0.v201005080400.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.equinox.common_3.6.200.v20130402-1505.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.osgi.services_3.3.100.v20130513-1956.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.expressions_3.4.500.v20130515-1343.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.contenttype_3.4.200.v20130326-1255.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.update.configurator_3.3.200.v20130326-1319.jar specialpurpose birt ./specialpurpose/birt/lib/org.w3c.dom.svg_1.1.0.v201011041433.jar specialpurpose birt ./specialpurpose/birt/lib/Tidy.jar specialpurpose birt ./specialpurpose/birt/lib/js.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.runtime_3.9.0.v20130326-1255.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.datatools.connectivity.oda_3.4.1.v201308160907.jar specialpurpose birt ./specialpurpose/birt/lib/org.w3c.css.sac_1.3.0.v200805290154.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.osgi_3.9.1.v20130814-1242.jar specialpurpose birt ./specialpurpose/birt/lib/org.eclipse.core.resources_3.8.101.v20130717-0806.jar specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/webhelpindexer.jar specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/tagsoup-1.2.1.jar specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/lucene-analyzers-3.0.0.jar specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/xalan-2.7.2.jar specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/saxon65.jar specialpurpose cmssite ./specialpurpose/cmssite/template/docbook/extensions/lucene-core-3.0.0.jar specialpurpose ebaystore ./specialpurpose/ebaystore/lib/helper.jar specialpurpose ebaystore ./specialpurpose/ebaystore/lib/attributes.jar specialpurpose ebaystore ./specialpurpose/ebaystore/lib/ebaysdkcore.jar specialpurpose ebaystore ./specialpurpose/ebaystore/lib/ebaycalls.jar specialpurpose googlecheckout ./specialpurpose/googlecheckout/lib/checkout-sdk-0.8.8.jar specialpurpose ldap ./specialpurpose/ldap/lib/cas-server-core-3.3.jar specialpurpose lucene ./specialpurpose/lucene/lib/lucene-core-5.3.1.jar specialpurpose lucene ./specialpurpose/lucene/lib/lucene-queryparser-5.3.1.jar specialpurpose lucene ./specialpurpose/lucene/lib/lucene-analyzers-common-5.3.1.jar specialpurpose pos ./specialpurpose/pos/lib/jpos18-controls.jar specialpurpose pos ./specialpurpose/pos/lib/XuiCoreSwing-v3.2rc2b.jar specialpurpose pos ./specialpurpose/pos/lib/jcl.jar specialpurpose pos ./specialpurpose/pos/lib/looks-2.0.2.jar specialpurpose pos ./specialpurpose/pos/lib/XuiOptional-v3.2rc2b.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/hadoop-annotations-2.7.2.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/concurrentlinkedhashmap-lru-1.2.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/stax2-api-3.1.4.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/hadoop-auth-2.7.2.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/asm-commons-4.1.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/antlr-runtime-3.5.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/jackson-dataformat-smile-2.5.4.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-sandbox-5.3.1.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-analyzers-kuromoji-5.3.1.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-grouping-5.3.1.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/asm-4.1.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-backward-codecs-5.3.1.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/woodstox-core-asl-4.4.1.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/t-digest-3.1.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/commons-configuration-1.6.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-analyzers-phonetic-5.3.1.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/commons-cli-1.2.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/hppc-0.5.2.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/protobuf-java-2.5.0.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-expressions-5.3.1.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/htrace-core-3.0.4.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/commons-exec-1.3.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/hadoop-common-2.7.2.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/jackson-core-2.5.4.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/lucene-memory-5.3.1.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/hadoop-hdfs-2.7.2.jar specialpurpose solr ./specialpurpose/solr/webapp/solr/WEB-INF/lib/wstx-asl-3.2.7.jar specialpurpose solr ./specialpurpose/solr/lib/compile/solr-core-5.3.1.jar specialpurpose solr ./specialpurpose/solr/lib/compile/solr-solrj-5.3.1.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/org.restlet-2.3.0.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/org.restlet.ext.servlet-2.3.0.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/zookeeper-3.4.6.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-join-5.3.1.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/joda-time-2.2.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-highlighter-5.3.1.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-codecs-5.3.1.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/noggit-0.6.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-queries-5.3.1.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-spatial-5.3.1.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-suggest-5.3.1.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/spatial4j-0.4.1.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/lucene-misc-5.3.1.jar specialpurpose solr ./specialpurpose/solr/lib/runtime/httpmime-4.4.1.jar tools demo-backup ./tools/demo-backup/contrast-rO0.jar tools security ./tools/security/notsoserial/notsoserial-1.0-SNAPSHOT.jar
          Hide
          jacopoc Jacopo Cappellato added a comment -

          As regards watermarker-0.0.4.jar: it seems like the jar is no more available in the public and there may be license concerns (i.e. we are not 100% sure of its origin) so we may have to remove it with the features/code dependent on it or refactor the code to use a different library. Volunteers?

          Show
          jacopoc Jacopo Cappellato added a comment - As regards watermarker-0.0.4.jar: it seems like the jar is no more available in the public and there may be license concerns (i.e. we are not 100% sure of its origin) so we may have to remove it with the features/code dependent on it or refactor the code to use a different library. Volunteers?
          Hide
          jacopoc Jacopo Cappellato added a comment -

          all the jars in /specialpurpose/birt/lib/ are there because, from what I understand, the component contains actually a full birt distribution; maintaining all of them may be an overwhelming effort but there are users of this component and they may have the interest and resources to contribute this work (Jacques Le Roux may know more about them and could facilitate the communication).

          Show
          jacopoc Jacopo Cappellato added a comment - all the jars in /specialpurpose/birt/lib/ are there because, from what I understand, the component contains actually a full birt distribution; maintaining all of them may be an overwhelming effort but there are users of this component and they may have the interest and resources to contribute this work ( Jacques Le Roux may know more about them and could facilitate the communication).
          Hide
          jacopoc Jacopo Cappellato added a comment -

          similar to birt:
          all the jars in /specialpurpose/solr/lib/ are there because, from what I understand, the component contains actually a full solr distribution; maintaining all of them may be an overwhelming effort but there are users of this component and they may have the interest and resources to contribute this work (Jacques Le Roux may know more about them and could facilitate the communication).

          Show
          jacopoc Jacopo Cappellato added a comment - similar to birt: all the jars in /specialpurpose/solr/lib/ are there because, from what I understand, the component contains actually a full solr distribution; maintaining all of them may be an overwhelming effort but there are users of this component and they may have the interest and resources to contribute this work ( Jacques Le Roux may know more about them and could facilitate the communication).
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Hi Taher,

          I just began to test. Here are some things I noticed so far. As you may know I'm working on WIndows and I got this during my 1st build

          C:\projectASF-Mars\ofbiz>gradlew
          :compileJava
          C:\projectASF-Mars\ofbiz\framework\common\src\org\ofbiz\common\UrlServletHelper.java:249: error: unmappable character for encoding Cp1252
                  str = str.replace("´╝?", "-");
                                       ^
          [3 other cases like that...]
          

          I never saw (noticed?) that before and just learnt that a complete and definitive fix is to set JAVA_TOOL_OPTIONS env var to -Dfile.encoding=UTF8. I report this here for others and I guess a word in the README.MD and the wiki would fit.

          Apart that build and test went perfectly well. After using "gradlew eclipse" I got a cleaned .project but an awful .classpath . I guess it's no longer an issue for us if it builds correctly (good riddance). I though noticed in Eclipse (after several refreshs there) that Eclipse complained absurdly about the classpath, an Eclipse restart fixed that!

          About README.MD and the .bat prefix. You don't need to put the prefix to run the commands. So "gradlew.bat cleanAll loadDefault" should be "gradlew cleanAll loadDefault", etc.

          I tried

          gradlew 'ofbiz --start

          but got

          C:\projectASF-Mars\ofbiz>gradlew 'ofbiz --start
          Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
          
          FAILURE: Build failed with an exception.
          
          * What went wrong:
          Task ''ofbiz' not found in root project 'ofbiz'.
          
          * Try:
          Run gradlew tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
          
          BUILD FAILED
          
          Total time: 2.465 secs
          
          C:\projectASF-Mars\ofbiz>
          

          What could I miss?

          Show
          jacques.le.roux Jacques Le Roux added a comment - Hi Taher, I just began to test. Here are some things I noticed so far. As you may know I'm working on WIndows and I got this during my 1st build C:\projectASF-Mars\ofbiz>gradlew :compileJava C:\projectASF-Mars\ofbiz\framework\common\src\org\ofbiz\common\UrlServletHelper.java:249: error: unmappable character for encoding Cp1252 str = str.replace( "´╝?" , "-" ); ^ [3 other cases like that...] I never saw (noticed?) that before and just learnt that a complete and definitive fix is to set JAVA_TOOL_OPTIONS env var to -Dfile.encoding=UTF8. I report this here for others and I guess a word in the README.MD and the wiki would fit. Apart that build and test went perfectly well. After using "gradlew eclipse" I got a cleaned .project but an awful .classpath . I guess it's no longer an issue for us if it builds correctly (good riddance). I though noticed in Eclipse (after several refreshs there) that Eclipse complained absurdly about the classpath, an Eclipse restart fixed that! About README.MD and the .bat prefix. You don't need to put the prefix to run the commands. So "gradlew.bat cleanAll loadDefault" should be "gradlew cleanAll loadDefault", etc. I tried gradlew 'ofbiz --start but got C:\projectASF-Mars\ofbiz>gradlew 'ofbiz --start Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8 FAILURE: Build failed with an exception. * What went wrong: Task ''ofbiz' not found in root project 'ofbiz'. * Try: Run gradlew tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 2.465 secs C:\projectASF-Mars\ofbiz> What could I miss?
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Jacopo, Taher,

          About Birt and Solr, this is what I fear with the changes with Gradle. I dont' know exactly either for Birt and Solr, but if ever we have OOTB code connected to (eg) specific Birt or Solr versions we will need to clean things in our code (or in Gradle setting?) if Gradle blindly downloads the last versions. For instance how to decide to pick Tomcat 8, 8.5 or 9?

          Also you know I put in place the OWASP Dependency Check (I have to work on that again, we have few vulnerabilites) I wonder if/how we will have to tweak Gradle to handle those aspects, still in haze for now, anyway steps after steps...

          Show
          jacques.le.roux Jacques Le Roux added a comment - Jacopo, Taher, About Birt and Solr, this is what I fear with the changes with Gradle. I dont' know exactly either for Birt and Solr, but if ever we have OOTB code connected to (eg) specific Birt or Solr versions we will need to clean things in our code (or in Gradle setting?) if Gradle blindly downloads the last versions. For instance how to decide to pick Tomcat 8, 8.5 or 9? Also you know I put in place the OWASP Dependency Check (I have to work on that again, we have few vulnerabilites) I wonder if/how we will have to tweak Gradle to handle those aspects, still in haze for now, anyway steps after steps...
          Hide
          jacopoc Jacopo Cappellato added a comment -

          Jacques Le Roux I think you are missing the trailing ' character:

          gradlew 'ofbiz --start'
          
          Show
          jacopoc Jacopo Cappellato added a comment - Jacques Le Roux I think you are missing the trailing ' character: gradlew 'ofbiz --start'
          Hide
          jacopoc Jacopo Cappellato added a comment -

          Jacques Le Roux In Gradle you have full control on the version of a given library; you are not limited to download the latest version.

          Show
          jacopoc Jacopo Cappellato added a comment - Jacques Le Roux In Gradle you have full control on the version of a given library; you are not limited to download the latest version.
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          This said I'll indeed try to facilitate the communications

          Show
          jacques.le.roux Jacques Le Roux added a comment - This said I'll indeed try to facilitate the communications
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Thanks Jacopo,

          Nope, Taher said me the same (it's not in the README/MD), but I get the same with the trailing quote, weird :/

          Show
          jacques.le.roux Jacques Le Roux added a comment - Thanks Jacopo, Nope, Taher said me the same (it's not in the README/MD), but I get the same with the trailing quote, weird :/
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          OK, one worry less, I was expecting something like that

          Show
          jacques.le.roux Jacques Le Roux added a comment - OK, one worry less, I was expecting something like that
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          If ever it can help

          C:\projectASF-Mars\ofbiz>gradlew --stacktrace 'ofbiz --start'
          Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
          
          FAILURE: Build failed with an exception.
          
          * What went wrong:
          Task ''ofbiz' not found in root project 'ofbiz'.
          
          * Try:
          Run gradlew tasks to get a list of available tasks. Run with --info or --debug option to get more log output.
          
          * Exception is:
          org.gradle.execution.TaskSelectionException: Task ''ofbiz' not found in root project 'ofbiz'.
                  at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:100)
                  at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:75)
                  at org.gradle.execution.commandline.CommandLineTaskParser.parseTasks(CommandLineTaskParser.java:42)
                  at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:44)
                  at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
                  at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25)
                  at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54)
                  at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:44)
                  at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
                  at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25)
                  at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54)
                  at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:47)
                  at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
                  at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:36)
                  at org.gradle.initialization.DefaultGradleLauncher$3.run(DefaultGradleLauncher.java:143)
                  at org.gradle.internal.Factories$1.create(Factories.java:22)
                  at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
                  at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
                  at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:140)
                  at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
                  at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
                  at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
                  at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
                  at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
                  at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
                  at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
                  at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
                  at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
                  at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
                  at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
                  at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
                  at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)
                  at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)
                  at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
                  at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
                  at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
                  at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173)
                  at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:241)
                  at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:214)
                  at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
                  at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
                  at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:207)
                  at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
                  at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
                  at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
                  at org.gradle.launcher.Main.doAction(Main.java:33)
                  at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
                  at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:55)
                  at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:36)
                  at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
                  at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
                  at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
                  at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
          
          
          BUILD FAILED
          
          Total time: 2.646 secs
          
          Show
          jacques.le.roux Jacques Le Roux added a comment - If ever it can help C:\projectASF-Mars\ofbiz>gradlew --stacktrace 'ofbiz --start' Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8 FAILURE: Build failed with an exception. * What went wrong: Task ''ofbiz' not found in root project 'ofbiz'. * Try: Run gradlew tasks to get a list of available tasks. Run with --info or --debug option to get more log output. * Exception is: org.gradle.execution.TaskSelectionException: Task ''ofbiz' not found in root project 'ofbiz'. at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:100) at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:75) at org.gradle.execution.commandline.CommandLineTaskParser.parseTasks(CommandLineTaskParser.java:42) at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:44) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25) at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54) at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:44) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25) at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54) at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:47) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:36) at org.gradle.initialization.DefaultGradleLauncher$3.run(DefaultGradleLauncher.java:143) at org.gradle.internal.Factories$1.create(Factories.java:22) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:140) at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32) at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99) at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82) at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94) at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28) at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81) at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46) at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51) at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28) at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43) at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:241) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:214) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:207) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) at org.gradle.launcher.Main.doAction(Main.java:33) at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:55) at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:36) at org.gradle.launcher.GradleMain.main(GradleMain.java:23) at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129) at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61) BUILD FAILED Total time: 2.646 secs
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Jacques,

          Ok, figured it out, just use "double quotes" instead of 'single quotes'

          So gradlew "ofbiz --start"

          I will update the README.md. Thank you for the valuable feedback.

          Show
          taher Taher Alkhateeb added a comment - Hi Jacques, Ok, figured it out, just use "double quotes" instead of 'single quotes' So gradlew "ofbiz --start" I will update the README.md. Thank you for the valuable feedback.
          Hide
          taher Taher Alkhateeb added a comment -

          In addition to everything mentioned in the previous patches, this patch introduces a skeleton for an OFBiz plug-in system.

          How did we design it
          ------------------------------

          • Add all the components defined in framework/component-load.xml as gradle subprojects
          • Add all the components defined in applications/component-load.xml as gradle subprojects
          • Add all the components defined in specialcomponents/component-load.xml as gradle subprojects
          • Add the start component as a gradle subproject
          • Add all the components in /hot-deploy as gradle subprojects
          • Each subproject can optionally have a build.gradle script
          • If a directory exists in framework, applications or specialpurpose but is not defined in component-load.xml, then it will be considered a dead folder, it will not even compile and it will not be part of OFBiz and your IDE will ignore it.

          What are the benefits
          -------------------------------

          • Each subproject can declare its own library dependencies in its own build.gradle away from the framework
          • Compilation, running, and testing is centralized at the master build script, making the subproject build scripts very small
          • It is very easy now to "turn on" or "turn off" a plugin with a build script that simply removes/adds it to component-load.xml!
          • We can now design a full plug-in API and can design a full eco-system around OFBiz.
          • If we decide to, we do not have to compile and test everything, we can offload the maintenance of plugins to specialized teams, or even to third parties.
          Show
          taher Taher Alkhateeb added a comment - In addition to everything mentioned in the previous patches, this patch introduces a skeleton for an OFBiz plug-in system. How did we design it ------------------------------ Add all the components defined in framework/component-load.xml as gradle subprojects Add all the components defined in applications/component-load.xml as gradle subprojects Add all the components defined in specialcomponents/component-load.xml as gradle subprojects Add the start component as a gradle subproject Add all the components in /hot-deploy as gradle subprojects Each subproject can optionally have a build.gradle script If a directory exists in framework, applications or specialpurpose but is not defined in component-load.xml, then it will be considered a dead folder, it will not even compile and it will not be part of OFBiz and your IDE will ignore it. What are the benefits ------------------------------- Each subproject can declare its own library dependencies in its own build.gradle away from the framework Compilation, running, and testing is centralized at the master build script, making the subproject build scripts very small It is very easy now to "turn on" or "turn off" a plugin with a build script that simply removes/adds it to component-load.xml! We can now design a full plug-in API and can design a full eco-system around OFBiz. If we decide to, we do not have to compile and test everything, we can offload the maintenance of plugins to specialized teams, or even to third parties.
          Hide
          gil portenseigne Gil Portenseigne added a comment - - edited

          All help is welcome, we need to find a get the correct jcenter URL ( bintray.com/bintray/jcenter ) for each jar mentionned in the post. The goal is to replace the jar in OFBiz by the corresponding remote one.

          For that purpose we created a framacalc to store the references for each jar : https://framacalc.org/OFBizRemoteJarList

          Feel free to edit it to add the corresponding remote you found and for each be sure to get the right lib, if uncertain :

          1. delete the local lib
          2. download the remote lib to the same location
          3. compile

          The syntax to follow is :
          Syntax: '<group>:<name>:<version>'
          Example: 'org.apache.commons:commons-dbcp2:2.1.1'

          Show
          gil portenseigne Gil Portenseigne added a comment - - edited All help is welcome, we need to find a get the correct jcenter URL ( bintray.com/bintray/jcenter ) for each jar mentionned in the post. The goal is to replace the jar in OFBiz by the corresponding remote one. For that purpose we created a framacalc to store the references for each jar : https://framacalc.org/OFBizRemoteJarList Feel free to edit it to add the corresponding remote you found and for each be sure to get the right lib, if uncertain : delete the local lib download the remote lib to the same location compile The syntax to follow is : Syntax: '<group>:<name>:<version>' Example: 'org.apache.commons:commons-dbcp2:2.1.1'
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          I put a link to the framacalc (see on top)

          Show
          jacques.le.roux Jacques Le Roux added a comment - I put a link to the framacalc (see on top)
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Adds a link to jcenter (top of screen, easier to find)

          Show
          jacques.le.roux Jacques Le Roux added a comment - Adds a link to jcenter (top of screen, easier to find)
          Hide
          mbrohl Michael Brohl added a comment -

          Ok, I have tested the tomcat/catalina and entity libs. They compile ok.

          Show
          mbrohl Michael Brohl added a comment - Ok, I have tested the tomcat/catalina and entity libs. They compile ok.
          Hide
          mbrohl Michael Brohl added a comment -

          Lucene and solr jars are added to the list and compiled ok.

          Show
          mbrohl Michael Brohl added a comment - Lucene and solr jars are added to the list and compiled ok.
          Hide
          pfm.smits Pierre Smits added a comment -

          Please open a dev branch so that this issue won't get to have lengthy/numerous comments and lots of patch files that confuse the matter. Findings can be captured within specific JIRA issues.

          This improvement has a big enough impact on the code base to warrant a dev branch.

          Show
          pfm.smits Pierre Smits added a comment - Please open a dev branch so that this issue won't get to have lengthy/numerous comments and lots of patch files that confuse the matter. Findings can be captured within specific JIRA issues. This improvement has a big enough impact on the code base to warrant a dev branch.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Pierre

          Please visit OFBIZ-6783 and look at the number of patches and comments.

          I am comfortable with the rate of change, it is minimal impact per commit. The first patch to go inside is for minor changes with the big change only in the gradle files themselves..

          With that being said, we appreciate if you can help out. We are trying to identify the libraries from jcenter (described above).

          Show
          taher Taher Alkhateeb added a comment - Hi Pierre Please visit OFBIZ-6783 and look at the number of patches and comments. I am comfortable with the rate of change, it is minimal impact per commit. The first patch to go inside is for minor changes with the big change only in the gradle files themselves.. With that being said, we appreciate if you can help out. We are trying to identify the libraries from jcenter (described above).
          Hide
          pfm.smits Pierre Smits added a comment -

          I am always using http://mvnrepository.com/ as a point of reference/source for external libraries. Seems like your jcenter is a competitor or derivative thereof.

          Show
          pfm.smits Pierre Smits added a comment - I am always using http://mvnrepository.com/ as a point of reference/source for external libraries. Seems like your jcenter is a competitor or derivative thereof.
          Hide
          jacques.le.roux Jacques Le Roux added a comment - - edited

          Hi Pierre,

          I understand your concerns, reverting and removing and reaplying a such patch is not easy at 1st glance. But as long as you keep the .gradle part (so you don't need to manipulate the Gradle wrapper), and (for me at least) keep the .gradle and build svn:ignore properties, it's not so hard as well since, in Eclipse, you can also exclude keeped files when patching (like gradle-wrapper.properties). I know what I'm talking about, I just did it with the last patch, all works perfectly, even stuff like "gradlew svnInfoFooter"

          I also don't think a branch is required. Apart few minor changes in Java code, it's mostly adds. Ant will still be in place with no Ant related changes (in builds, etc.)

          Also there are some good changes, for instance see the NOTICE file. One thing is the removing of Eclipsthe .classpath and .project file. But it's a breeze to recreate them using "gradlew eclipse".

          README.MD is better than README but we will maybe need to remove it later rather than now.

          I have no ideas about "mvnrepository vs jcenter" (ie did not look at it). I guess Taher picked jcenter because it's in relation with Gradle.

          Show
          jacques.le.roux Jacques Le Roux added a comment - - edited Hi Pierre, I understand your concerns, reverting and removing and reaplying a such patch is not easy at 1st glance. But as long as you keep the .gradle part (so you don't need to manipulate the Gradle wrapper), and (for me at least) keep the .gradle and build svn:ignore properties, it's not so hard as well since, in Eclipse, you can also exclude keeped files when patching (like gradle-wrapper.properties). I know what I'm talking about, I just did it with the last patch, all works perfectly, even stuff like "gradlew svnInfoFooter" I also don't think a branch is required. Apart few minor changes in Java code, it's mostly adds. Ant will still be in place with no Ant related changes (in builds, etc.) Also there are some good changes, for instance see the NOTICE file. One thing is the removing of Eclipsthe .classpath and .project file. But it's a breeze to recreate them using "gradlew eclipse". README.MD is better than README but we will maybe need to remove it later rather than now. I have no ideas about "mvnrepository vs jcenter" (ie did not look at it). I guess Taher picked jcenter because it's in relation with Gradle.
          Hide
          pfm.smits Pierre Smits added a comment -

          See issue OFBIZ-7729

          Show
          pfm.smits Pierre Smits added a comment - See issue OFBIZ-7729
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Hi Taher,

          Just minor things I spotted while appying the last patch:

          • As I said above

            README.MD is better than README but we will maybe need to remove it later rather than now.

            Also not sure we need to remove .classpath and .project in a 1st phase. Like README , this could be done later with Ant removing.

          • Why?
            -            .desc("Start OFBiz (beware of possible needed JVM arguments...)")
            +            .desc("Start OFBiz")
            

          Thanks for the hard work!

          Show
          jacques.le.roux Jacques Le Roux added a comment - Hi Taher, Just minor things I spotted while appying the last patch: As I said above README.MD is better than README but we will maybe need to remove it later rather than now. Also not sure we need to remove .classpath and .project in a 1st phase. Like README , this could be done later with Ant removing. Why? - .desc( "Start OFBiz (beware of possible needed JVM arguments...)" ) + .desc( "Start OFBiz" ) Thanks for the hard work!
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Jacques,

          Ok good idea, I'll keep the files for now.

          Why did I remove the JVM arguments comment? because the JVM arguments are now automatically inserted from gradle, and there is no java -jar ofbiz.jar anymore. So no need to warn people about JVM arguments.

          Show
          taher Taher Alkhateeb added a comment - Hi Jacques, Ok good idea, I'll keep the files for now. Why did I remove the JVM arguments comment? because the JVM arguments are now automatically inserted from gradle, and there is no java -jar ofbiz.jar anymore. So no need to warn people about JVM arguments.
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          OK, clear, thanks!

          Show
          jacques.le.roux Jacques Le Roux added a comment - OK, clear, thanks!
          Hide
          sharan Sharan Foga added a comment -

          Hi Taher

          Here's my feedback - Your readme file is great and I had no problems applying the patch and using the new gradle commands. I did a few tests on the data loading side just to check test the system with and without the demo data. I can confirm that it all works fine as does the new command to create the admin user.

          I've also been doing some general testing on the applications from a functional perspective just to make sure that things still work. Sales Orders, Refunds, Purchase Orders, Inventory, Manufacturing, Accounting, Party and Accounting are all looking good and working OK as far as I can see. I've also tried as many reports as I could find and have had no issues displaying any of them or exporting to CSV.

          From my side, the patch is good. Thanks for all the hard work!

          Show
          sharan Sharan Foga added a comment - Hi Taher Here's my feedback - Your readme file is great and I had no problems applying the patch and using the new gradle commands. I did a few tests on the data loading side just to check test the system with and without the demo data. I can confirm that it all works fine as does the new command to create the admin user. I've also been doing some general testing on the applications from a functional perspective just to make sure that things still work. Sales Orders, Refunds, Purchase Orders, Inventory, Manufacturing, Accounting, Party and Accounting are all looking good and working OK as far as I can see. I've also tried as many reports as I could find and have had no issues displaying any of them or exporting to CSV. From my side, the patch is good. Thanks for all the hard work!
          Hide
          taher Taher Alkhateeb added a comment -

          Thank you everybody for your wonderful support and feedback

          We have the first commit in r1751309. As of right now, ant lives side-by-side with ant and will be replaced in the upcoming few commits

          Show
          taher Taher Alkhateeb added a comment - Thank you everybody for your wonderful support and feedback We have the first commit in r1751309. As of right now, ant lives side-by-side with ant and will be replaced in the upcoming few commits
          Hide
          pfm.smits Pierre Smits added a comment -

          Thanks Taher. Well done!

          Show
          pfm.smits Pierre Smits added a comment - Thanks Taher. Well done!
          Hide
          pfm.smits Pierre Smits added a comment -

          when looking up the appropriate external library, the site give the correct code for inclusion in a gradle.build file.

          Show
          pfm.smits Pierre Smits added a comment - when looking up the appropriate external library, the site give the correct code for inclusion in a gradle.build file.
          Hide
          toashishvijay Ashish Vijaywargiya added a comment -

          Hello Taher,

          Today I setup ofbiz demo data by the help of Gradle. And here is my general feedback. Overall things are really smooth and the document that you prepared readme.md is just awesome and very helpful.

          1) I really like the build output that ant build command generates. That is really helpful to see which files it is compiling etc, etc. In case of Gradle build I didn't see any such output. I think by doing some adjustment in Debugging Log Level we can enable it.

          2) Other then this I liked the feature of stopping ofbiz by simply running "Ctrl+C" in case of Ant. For shutting down gradle I have to open new terminal and run shutdown command. I think we can do something here as well.

          3) Then one more problem I faced, I forgot to create database so Gradle keep trying to acquire db connection, but in case of ant it releases the control to check db existence and exit and allow user to run other commands. In case of gradle you have to kill ofbiz.

          In next few days I will explore other commands as well from readme.md and be back with more feedback.

          Other then this everything is smooth. I installed ofbiz on my machine and loaded all the demo data, Ran some business process like created customer, order, completed order, created quote etc, etc. Everything is smooth.

          Thanks so much Taher for all your great work. It is very impressive one!

          Thanks,
          Ashish

          Show
          toashishvijay Ashish Vijaywargiya added a comment - Hello Taher, Today I setup ofbiz demo data by the help of Gradle. And here is my general feedback. Overall things are really smooth and the document that you prepared readme.md is just awesome and very helpful. 1) I really like the build output that ant build command generates. That is really helpful to see which files it is compiling etc, etc. In case of Gradle build I didn't see any such output. I think by doing some adjustment in Debugging Log Level we can enable it. 2) Other then this I liked the feature of stopping ofbiz by simply running "Ctrl+C" in case of Ant. For shutting down gradle I have to open new terminal and run shutdown command. I think we can do something here as well. 3) Then one more problem I faced, I forgot to create database so Gradle keep trying to acquire db connection, but in case of ant it releases the control to check db existence and exit and allow user to run other commands. In case of gradle you have to kill ofbiz. In next few days I will explore other commands as well from readme.md and be back with more feedback. Other then this everything is smooth. I installed ofbiz on my machine and loaded all the demo data, Ran some business process like created customer, order, completed order, created quote etc, etc. Everything is smooth. Thanks so much Taher for all your great work. It is very impressive one! Thanks, Ashish
          Hide
          taher Taher Alkhateeb added a comment -

          Thank you for the wonderful feedback Ashish!

          So, a few feedback points:

          • Ant is an imperative tool (do things in sequence) whereas Gradle is declarative. Because of this difference, the Gradle output is very different from ant when doing ./gradlew whatever --info. So we have multiple solutions for this, for example, we can loop over all components and compile them one by one separately in a different configuration classpath and then combine them together at the end. It's a bit of a pain to get the code right but nothing major. Another solution is to write custom logger.info or println statements to show what is going on during the compilation process. Yet another option is to break the compilation process into the subprojects. I will think some more of the best solution and I'll put it in the list of future things to do to improve the output of Gradle
          • Ctrl-C does not work with Gradle because it is a powerful engine that can do multiple tasks in parallel by spawning threads and processes. So a simple Ctrl-C does not work because it only kills gradle, not the other sub-processes. So I am going to work on a new task called terminateOfbiz which searches for running instances of OFBiz and kill them.
          • Hmmmm, very good point on the database. Should I let Gradle check if a database exists, and if not then terminate with a clear message? It would be easy to check if a derby database exists, but what about the others? should I establish a JDBC connection?

          Great feedback, very useful information, thank you!

          Show
          taher Taher Alkhateeb added a comment - Thank you for the wonderful feedback Ashish! So, a few feedback points: Ant is an imperative tool (do things in sequence) whereas Gradle is declarative. Because of this difference, the Gradle output is very different from ant when doing ./gradlew whatever --info. So we have multiple solutions for this, for example, we can loop over all components and compile them one by one separately in a different configuration classpath and then combine them together at the end. It's a bit of a pain to get the code right but nothing major. Another solution is to write custom logger.info or println statements to show what is going on during the compilation process. Yet another option is to break the compilation process into the subprojects. I will think some more of the best solution and I'll put it in the list of future things to do to improve the output of Gradle Ctrl-C does not work with Gradle because it is a powerful engine that can do multiple tasks in parallel by spawning threads and processes. So a simple Ctrl-C does not work because it only kills gradle, not the other sub-processes. So I am going to work on a new task called terminateOfbiz which searches for running instances of OFBiz and kill them. Hmmmm, very good point on the database. Should I let Gradle check if a database exists, and if not then terminate with a clear message? It would be easy to check if a derby database exists, but what about the others? should I establish a JDBC connection? Great feedback, very useful information, thank you!
          Hide
          mbrohl Michael Brohl added a comment -

          Just a short opinion about the database part: I think the build tool should not be responsible for checking the database connection. That should be part of the startup sequence (and is).

          I think the learning for a developer will be quick if he once forgets to configure his database right and has to wait until some timeout occurcs and the startup is terminated. So, with regard to the huge amount of other tasks, I suggest to leave this as a minor glitch for later (or any volunteer ).

          Show
          mbrohl Michael Brohl added a comment - Just a short opinion about the database part: I think the build tool should not be responsible for checking the database connection. That should be part of the startup sequence (and is). I think the learning for a developer will be quick if he once forgets to configure his database right and has to wait until some timeout occurcs and the startup is terminated. So, with regard to the huge amount of other tasks, I suggest to leave this as a minor glitch for later (or any volunteer ).
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Hi Taher, All,

          I'd like to hide in OFBiz root folder svn .gradle and build folders with

          Index: .
          ===================================================================
          --- .	(revision 1751504)
          +++ .	(working copy)
          
          Property changes on: .
          ___________________________________________________________________
          Modified: svn:global-ignores
          ## -1 +1,3 ##
           .git
          +.gradle
          +build
          

          I'd also like to add to r1751309 comment that we should later remove .project and .classpath. And while at it, in relation with this and .gradle + build folders, we will remove from OFBiz root folder svn:ignore property
          ofbiz.jar
          And from each component folder (but at least images) svn:ignore property
          build

          Not quite sure it's all, but I believe almost.

          Show
          jacques.le.roux Jacques Le Roux added a comment - Hi Taher, All, I'd like to hide in OFBiz root folder svn .gradle and build folders with Index: . =================================================================== --- . (revision 1751504) +++ . (working copy) Property changes on: . ___________________________________________________________________ Modified: svn:global-ignores ## -1 +1,3 ## .git +.gradle +build I'd also like to add to r1751309 comment that we should later remove .project and .classpath. And while at it, in relation with this and .gradle + build folders, we will remove from OFBiz root folder svn:ignore property ofbiz.jar And from each component folder (but at least images) svn:ignore property build Not quite sure it's all, but I believe almost.
          Hide
          taher Taher Alkhateeb added a comment - - edited

          Hi Jacques,

          In feedback to your comments:

          1. agreed with .gradle ans build directories hiding in root as well as ofbiz.jar
          2. It's okay but not very necessary to modify the commit saying we will remove .classpath and .project. Many other files will go away, maybe we should mention it in its own commit?
          3. I hesitate about the build directory in each component. Under the current design each component is a gradle subproject. If any of these subprojects applies the Java plugin for whatever reason a build directory will be created. I am not sure we will use it but a little delay on this point would be better until the picture is clear.

          Cheers!

          Show
          taher Taher Alkhateeb added a comment - - edited Hi Jacques, In feedback to your comments: agreed with .gradle ans build directories hiding in root as well as ofbiz.jar It's okay but not very necessary to modify the commit saying we will remove .classpath and .project. Many other files will go away, maybe we should mention it in its own commit? I hesitate about the build directory in each component. Under the current design each component is a gradle subproject. If any of these subprojects applies the Java plugin for whatever reason a build directory will be created. I am not sure we will use it but a little delay on this point would be better until the picture is clear. Cheers!
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          2. Agreed, it was only in case we later refer to this commit and wonder what should be removed
          3. OK, let's wait

          Show
          jacques.le.roux Jacques Le Roux added a comment - 2. Agreed, it was only in case we later refer to this commit and wonder what should be removed 3. OK, let's wait
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Done at at revision: 1751619.

          I simply hid gradle and build directories for now. We will do the needed later as suggested above.

          Show
          jacques.le.roux Jacques Le Roux added a comment - Done at at revision: 1751619. I simply hid gradle and build directories for now. We will do the needed later as suggested above.
          Hide
          gil portenseigne Gil Portenseigne added a comment -

          The csv file containing references to the remote libs is joined, https://framacalc.org/OFBizRemoteJarList remains active if more work is needed.

          Show
          gil portenseigne Gil Portenseigne added a comment - The csv file containing references to the remote libs is joined, https://framacalc.org/OFBizRemoteJarList remains active if more work is needed.
          Hide
          gil portenseigne Gil Portenseigne added a comment -

          Tomcat annotation update, thanks Jacopo Cappellato

          Show
          gil portenseigne Gil Portenseigne added a comment - Tomcat annotation update, thanks Jacopo Cappellato
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          For the sake of clarity, should we not remove the build.gradle file from "23/Jun/16 21:20" ?

          Show
          jacques.le.roux Jacques Le Roux added a comment - For the sake of clarity, should we not remove the build.gradle file from "23/Jun/16 21:20" ?
          Hide
          taher Taher Alkhateeb added a comment -

          Committed a new task as discussed above called terminateOfbiz which force kills all running OFBiz server instances in r1751785.

          It was not as easy as I thought, but we ended up using a very nice solution on windows (in fact, better and cleaner than linux implementation)

          Show
          taher Taher Alkhateeb added a comment - Committed a new task as discussed above called terminateOfbiz which force kills all running OFBiz server instances in r1751785. It was not as easy as I thought, but we ended up using a very nice solution on windows (in fact, better and cleaner than linux implementation)
          Hide
          taher Taher Alkhateeb added a comment -

          Huh, I don't understand what you mean Jacques? What does the timestamp above refer to?

          Show
          taher Taher Alkhateeb added a comment - Huh, I don't understand what you mean Jacques? What does the timestamp above refer to?
          Hide
          taher Taher Alkhateeb added a comment -

          Added documentation to terminateOfbiz in README.md in r1751789.

          Show
          taher Taher Alkhateeb added a comment - Added documentation to terminateOfbiz in README.md in r1751789.
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          The old build.gradle attached file is useless, since it's in the patch anyway, and confusing, better to get rid of it.

          Show
          jacques.le.roux Jacques Le Roux added a comment - The old build.gradle attached file is useless, since it's in the patch anyway, and confusing, better to get rid of it.
          Hide
          taher Taher Alkhateeb added a comment -

          Oh got ya! deleted

          Show
          taher Taher Alkhateeb added a comment - Oh got ya! deleted
          Hide
          gil portenseigne Gil Portenseigne added a comment -

          This is the last revision with the missing lib and some fix/comments

          Show
          gil portenseigne Gil Portenseigne added a comment - This is the last revision with the missing lib and some fix/comments
          Hide
          taher Taher Alkhateeb added a comment -

          Applied a new major commit in r1752033. which does the following:

          • delete all ant and maven old scripts
          • delete 169 jars and replace them with remote jars downloaded by gradle
          • update the build scripts accordingly

          All tests are passing successfully. We need help from everyone to complete the replacements of all Jars in the framework.

          Thank you all for your wonderful help and support, this has been a great teamwork and I appreciate everyone's help.

          Show
          taher Taher Alkhateeb added a comment - Applied a new major commit in r1752033. which does the following: delete all ant and maven old scripts delete 169 jars and replace them with remote jars downloaded by gradle update the build scripts accordingly All tests are passing successfully. We need help from everyone to complete the replacements of all Jars in the framework. Thank you all for your wonderful help and support, this has been a great teamwork and I appreciate everyone's help.
          Hide
          pfm.smits Pierre Smits added a comment - - edited

          I believe it is a bad thing to remove the ant tasks at this moment in time. Without the ant tasks in the code base no real comparison can be made anymore.

          Please restore the ant tasks. They can be removed afterwards, when everything is migrated and found acceptable.

          Show
          pfm.smits Pierre Smits added a comment - - edited I believe it is a bad thing to remove the ant tasks at this moment in time. Without the ant tasks in the code base no real comparison can be made anymore. Please restore the ant tasks. They can be removed afterwards, when everything is migrated and found acceptable.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Pierre,

          Ant is no longer sustainable from this point forward. Moving towards remote libraries (already started) means all ant scripts are now broken. We already kept ant for the longest possible period while testing functionality.

          Are there any specific tasks which worry you?

          Show
          taher Taher Alkhateeb added a comment - Hi Pierre, Ant is no longer sustainable from this point forward. Moving towards remote libraries (already started) means all ant scripts are now broken. We already kept ant for the longest possible period while testing functionality. Are there any specific tasks which worry you?
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          We lost the translation in footer svn/git info

          Show
          jacques.le.roux Jacques Le Roux added a comment - We lost the translation in footer svn/git info
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          "gradlew javadoc" fails, both locally (Ubuntu) and on BuildBot. It seems it's more sensible with Gradle or there is an error I did not spot (did no review just quickly browsed) see https://ci.apache.org/builders/ofbiz-trunk/builds/1058/steps/shell_2/logs/stdio

          I have more problems with WIndows (does not work at all) and will get back to it later.

          The result of OWASP dependency-check is quite nice

          Show
          jacques.le.roux Jacques Le Roux added a comment - "gradlew javadoc" fails, both locally (Ubuntu) and on BuildBot. It seems it's more sensible with Gradle or there is an error I did not spot (did no review just quickly browsed) see https://ci.apache.org/builders/ofbiz-trunk/builds/1058/steps/shell_2/logs/stdio I have more problems with WIndows (does not work at all) and will get back to it later. The result of OWASP dependency-check is quite nice
          Hide
          taher Taher Alkhateeb added a comment -

          Yeah, totally forgot about UI labels, ok I'm on it

          Show
          taher Taher Alkhateeb added a comment - Yeah, totally forgot about UI labels, ok I'm on it
          Hide
          taher Taher Alkhateeb added a comment -

          ok, great feedback:

          • It is fantastic that gradlew javadoc fails. It is detecting all the bad stuff we have in our javadocs. For example, some methods declare throwing some exception in javadoc but not in method signature. This task can actually help us clean up our documentation Nice !
          • Yeah got it on windows, it's file format issue .. I'm on it.
          Show
          taher Taher Alkhateeb added a comment - ok, great feedback: It is fantastic that gradlew javadoc fails. It is detecting all the bad stuff we have in our javadocs. For example, some methods declare throwing some exception in javadoc but not in method signature. This task can actually help us clean up our documentation Nice ! Yeah got it on windows, it's file format issue .. I'm on it.
          Hide
          taher Taher Alkhateeb added a comment -

          Fixed the issue in r1752059. Only Windows detected the error, nevertheless it's a very minor issue. The subprojects were being evaluated before the master script and they did not know what the definition of the pluginLibsCompile and pluginLibsRuntime means. One line fixed the issue by simply removing "evaluationDependsOnChildren()" declaration. This runs the subprojects before the master project.

          Show
          taher Taher Alkhateeb added a comment - Fixed the issue in r1752059. Only Windows detected the error, nevertheless it's a very minor issue. The subprojects were being evaluated before the master script and they did not know what the definition of the pluginLibsCompile and pluginLibsRuntime means. One line fixed the issue by simply removing "evaluationDependsOnChildren()" declaration. This runs the subprojects before the master project.
          Hide
          taher Taher Alkhateeb added a comment - - edited

          Ok Jacques, after further checking we slightly changed the old format of the footer. The old format used only the translated words uiLabelMap.CommonBuiltOn and uiLabelMap.CommonWith. On the other hand, the new format contains the words Branch, Revision, Built On and Java Version.

          Should we translate all four words in the CommonUiLabels.xml and then incorporate them?

          old version:

          " - Release-revision : ${releasePath}-r${info.entry.commit(revision)},  ${uiLabelMap.CommonBuiltOn} ${dateTime} ${uiLabelMap.CommonWith} Java ${java.version}
          

          new version:

          "Branch: ${info.entry.url.text()}" + System.lineSeparator()
          "Revision: ${info.entry.commit.@revision}" + System.lineSeparator()
          "Built on: ${timestamp}" + System.lineSeparator()
          "Java Version: ${org.gradle.internal.jvm.Jvm.current()}"
          
          Show
          taher Taher Alkhateeb added a comment - - edited Ok Jacques, after further checking we slightly changed the old format of the footer. The old format used only the translated words uiLabelMap.CommonBuiltOn and uiLabelMap.CommonWith . On the other hand, the new format contains the words Branch, Revision, Built On and Java Version. Should we translate all four words in the CommonUiLabels.xml and then incorporate them? old version: " - Release-revision : ${releasePath}-r${info.entry.commit(revision)}, ${uiLabelMap.CommonBuiltOn} ${dateTime} ${uiLabelMap.CommonWith} Java ${java.version} new version: "Branch: ${info.entry.url.text()}" + System .lineSeparator() "Revision: ${info.entry.commit.@revision}" + System .lineSeparator() "Built on: ${timestamp}" + System .lineSeparator() "Java Version: ${org.gradle.internal.jvm.Jvm.current()}"
          Hide
          taher Taher Alkhateeb added a comment -

          Pierre ...

          It would be great if you stop issuing so many JIRAs before at least you discuss them here. For example, your request to create build.gradle files in many subtasks is unnecessary because there is no reason to incorporate them unless you have specific tasks to implement. Even then, you can assign multiple things to one JIRA instead of having this micro JIRAs everywhere. Many other JIRAs you issued are also irrelevant due to either being not applicable or not fully understanding how gradle operates.

          Excessive issuing of JIRAs without properly formulating the problem might slow us down as we need to read them and reply with a proper answer. If you look at the exchange above, Jacques and I were discussing multiple issues which we fixed immediately in this JIRA without even issuing any further JIRAs

          Show
          taher Taher Alkhateeb added a comment - Pierre ... It would be great if you stop issuing so many JIRAs before at least you discuss them here. For example, your request to create build.gradle files in many subtasks is unnecessary because there is no reason to incorporate them unless you have specific tasks to implement. Even then, you can assign multiple things to one JIRA instead of having this micro JIRAs everywhere. Many other JIRAs you issued are also irrelevant due to either being not applicable or not fully understanding how gradle operates. Excessive issuing of JIRAs without properly formulating the problem might slow us down as we need to read them and reply with a proper answer. If you look at the exchange above, Jacques and I were discussing multiple issues which we fixed immediately in this JIRA without even issuing any further JIRAs
          Hide
          mbrohl Michael Brohl added a comment -

          +1, sometimes less is more...

          Show
          mbrohl Michael Brohl added a comment - +1, sometimes less is more...
          Hide
          pfm.smits Pierre Smits added a comment -

          This issue has already 80 postings as comments, amendments, etc.

          It seems you have been missing or even worse neglecting concerns/issues raised. Creating and addressing issues trough comments is not a good way to track progress.

          Show
          pfm.smits Pierre Smits added a comment - This issue has already 80 postings as comments, amendments, etc. It seems you have been missing or even worse neglecting concerns/issues raised. Creating and addressing issues trough comments is not a good way to track progress.
          Hide
          pfm.smits Pierre Smits added a comment -

          Yes. 80 comments, etc to this issue is hardly 'less'.

          Show
          pfm.smits Pierre Smits added a comment - Yes. 80 comments, etc to this issue is hardly 'less'.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Pierre,

          Please point out issues missing or neglected.

          Show
          taher Taher Alkhateeb added a comment - Hi Pierre, Please point out issues missing or neglected.
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Sorry Taher, got this now

          C:\projectASF-Mars\ofbiz>gradlew --stacktrace ofbiz
          Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
          :compileJava UP-TO-DATE
          :createBaseTestServiceProviderJar
          :processResources UP-TO-DATE
          :classes
          :ofbiz FAILED
          
          FAILURE: Build failed with an exception.
          
          * What went wrong:
          Execution failed for task ':ofbiz'.
          > A problem occurred starting process 'command 'C:\Program Files\Java\jdk1.8.0_74\bin\java.exe''
          
          * Try:
          Run with --info or --debug option to get more log output.
          
          * Exception is:
          org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':ofbiz'.
                  at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
                  at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
                  at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
                  at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:68)
                  at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
                  at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
                  at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
                  at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
                  at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
                  at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
                  at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
                  at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
                  at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
                  at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
                  at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
                  at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
                  at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
                  at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
                  at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
                  at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
                  at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
                  at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
                  at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
                  at org.gradle.internal.Factories$1.create(Factories.java:22)
                  at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
                  at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
                  at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
                  at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
                  at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
                  at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
                  at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
                  at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
                  at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
                  at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
                  at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
                  at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
                  at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
                  at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
                  at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
                  at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)
                  at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)
                  at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
                  at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
                  at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
                  at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173)
                  at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:241)
                  at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:214)
                  at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
                  at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
                  at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:207)
                  at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
                  at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
                  at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
                  at org.gradle.launcher.Main.doAction(Main.java:33)
                  at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
                  at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:55)
                  at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:36)
                  at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
                  at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
                  at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
                  at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
          Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'C:\Program Files\Java\jdk1.8.0_74\bin\java.exe''
                  at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:197)
                  at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:327)
                  at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:86)
                  at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
                  at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
          Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'C:\Program Files\Java\jdk1.8.0_74\bin\java.exe'
                  at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
                  at net.rubygrapefruit.platform.internal.WindowsProcessLauncher.start(WindowsProcessLauncher.java:22)
                  at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
                  at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:68)
                  ... 2 more
          Caused by: java.io.IOException: Cannot run program "C:\Program Files\Java\jdk1.8.0_74\bin\java.exe" (in directory "C:\projectASF-Mars\ofbiz"): CreateProcess error=206, Nom de fichier ou extension trop long
                  at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
                  ... 5 more
          Caused by: java.io.IOException: CreateProcess error=206, Nom de fichier ou extension trop long
                  ... 6 more
          
          
          BUILD FAILED
          
          Total time: 6.451 secs
          
          C:\projectASF-Mars\ofbiz>
          

          Same with "gradlew --stacktrace clean build ofbiz"

          Found this about it https://discuss.gradle.org/t/filename-too-long-in-windows/9222

          Show
          jacques.le.roux Jacques Le Roux added a comment - Sorry Taher, got this now C:\projectASF-Mars\ofbiz>gradlew --stacktrace ofbiz Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8 :compileJava UP-TO-DATE :createBaseTestServiceProviderJar :processResources UP-TO-DATE :classes :ofbiz FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':ofbiz'. > A problem occurred starting process 'command 'C:\Program Files\Java\jdk1.8.0_74\bin\java.exe'' * Try: Run with --info or --debug option to get more log output. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':ofbiz'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:68) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110) at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23) at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43) at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30) at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154) at org.gradle.internal.Factories$1.create(Factories.java:22) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151) at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32) at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99) at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82) at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94) at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28) at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81) at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46) at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51) at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28) at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43) at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:241) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:214) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:207) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) at org.gradle.launcher.Main.doAction(Main.java:33) at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:55) at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:36) at org.gradle.launcher.GradleMain.main(GradleMain.java:23) at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129) at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61) Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'C:\Program Files\Java\jdk1.8.0_74\bin\java.exe'' at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:197) at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:327) at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:86) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'C:\Program Files\Java\jdk1.8.0_74\bin\java.exe' at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27) at net.rubygrapefruit.platform.internal.WindowsProcessLauncher.start(WindowsProcessLauncher.java:22) at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36) at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:68) ... 2 more Caused by: java.io.IOException: Cannot run program "C:\Program Files\Java\jdk1.8.0_74\bin\java.exe" (in directory "C:\projectASF-Mars\ofbiz" ): CreateProcess error=206, Nom de fichier ou extension trop long at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25) ... 5 more Caused by: java.io.IOException: CreateProcess error=206, Nom de fichier ou extension trop long ... 6 more BUILD FAILED Total time: 6.451 secs C:\projectASF-Mars\ofbiz> Same with "gradlew --stacktrace clean build ofbiz" Found this about it https://discuss.gradle.org/t/filename-too-long-in-windows/9222
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          I suggest we close this issue and address related bugs in sub-tasks.

          And because this is a very specific issue, I think we should, before creating sub-tasks, discuss issues which are not bugs in the dev ML.
          This will hopefully avoid tons of comments here and not necessary sub-tasks or related issues.

          Show
          jacques.le.roux Jacques Le Roux added a comment - I suggest we close this issue and address related bugs in sub-tasks. And because this is a very specific issue, I think we should, before creating sub-tasks, discuss issues which are not bugs in the dev ML. This will hopefully avoid tons of comments here and not necessary sub-tasks or related issues.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Jacques ...

          This actually might be a blessing in disguise. I'm working on it!

          Show
          taher Taher Alkhateeb added a comment - Hi Jacques ... This actually might be a blessing in disguise. I'm working on it!
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Jacques,

          Good point, the only pending main issue I can think of is replacing remaining remote libraries (in the attached CSV). I suggest we close this task after completing the remote libs as this is the most critical part. Totally agree on discussing things before issuing JIRAs.

          Show
          taher Taher Alkhateeb added a comment - Hi Jacques, Good point, the only pending main issue I can think of is replacing remaining remote libraries (in the attached CSV). I suggest we close this task after completing the remote libs as this is the most critical part. Totally agree on discussing things before issuing JIRAs.
          Hide
          pfm.smits Pierre Smits added a comment - - edited

          I am all for discussion first. But when the discussion is nothing more than expressions of viewpoints, and where participants aren't collaborating towards an agreement of sorts, it is a waste of time and effort.

          The consensus should lead to something actionable, that - for tracking and reporting - is captured in a JIRA issue. So that results show up in release notes, etc. This way we ensure that our adopters stay on the page.

          Show
          pfm.smits Pierre Smits added a comment - - edited I am all for discussion first. But when the discussion is nothing more than expressions of viewpoints, and where participants aren't collaborating towards an agreement of sorts, it is a waste of time and effort. The consensus should lead to something actionable, that - for tracking and reporting - is captured in a JIRA issue. So that results show up in release notes, etc. This way we ensure that our adopters stay on the page.
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          I agree Taher, we close here once all the work on jars is done. Then we continue on open sub-tasks...

          Show
          jacques.le.roux Jacques Le Roux added a comment - I agree Taher, we close here once all the work on jars is done. Then we continue on open sub-tasks...
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Finally I sent a message on dev ML, too long to update.

          Show
          jacques.le.roux Jacques Le Roux added a comment - Finally I sent a message on dev ML, too long to update.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Jacques and all,

          Committed work in r1752125.

          I am very happy to announce that I made a fix in the build script which handles the above error in Windows but also has multiple other benefits. I will explain below:

          • Instead of a massive process name in the operating system (due to classpath) I created instead a jar that hides all this classpath away. This makes the command line process name much nicer
          • I declared a dependency for all OFBiz server tasks on the build task to ensure building the jar mentioned above. Now any residual issues (executing multiple commands sometimes fail) are now resolved

          This was difficult to implement mainly because of bugs I encountered in the Jar manifest. It was very tricky and after a lot of searching I realized that Jar manifests in windows have a weird syntax that we need to adhere to.

          I am very happy also to report that all tests pass on windows and linux from my side.

          Show
          taher Taher Alkhateeb added a comment - Hi Jacques and all, Committed work in r1752125. I am very happy to announce that I made a fix in the build script which handles the above error in Windows but also has multiple other benefits. I will explain below: Instead of a massive process name in the operating system (due to classpath) I created instead a jar that hides all this classpath away. This makes the command line process name much nicer I declared a dependency for all OFBiz server tasks on the build task to ensure building the jar mentioned above. Now any residual issues (executing multiple commands sometimes fail) are now resolved This was difficult to implement mainly because of bugs I encountered in the Jar manifest. It was very tricky and after a lot of searching I realized that Jar manifests in windows have a weird syntax that we need to adhere to. I am very happy also to report that all tests pass on windows and linux from my side.
          Hide
          charlb charl Bouwer added a comment -

          Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

          With the gradle build system the lib library isn't in the <ofbiz-dir>/framework/entity/lib/jdbc folder any more. What is the correct way for me to add it as not everybody is going to use the Mysql driver.
          I should have asked for all database drivers though because I assume they could be problematic though

          Show
          charlb charl Bouwer added a comment - Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver With the gradle build system the lib library isn't in the <ofbiz-dir>/framework/entity/lib/jdbc folder any more. What is the correct way for me to add it as not everybody is going to use the Mysql driver. I should have asked for all database drivers though because I assume they could be problematic though
          Hide
          pfm.smits Pierre Smits added a comment -

          This seems like a sub-task to resolve.

          Show
          pfm.smits Pierre Smits added a comment - This seems like a sub-task to resolve.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Charl,

          Thank you for the feedback, It's great that you mentioned this item.

          I'm working on it and will deliver something very soon for this. Hopefully this will be a big improvement to the way it was done in the past because before Gradle Ivy just used to download the latest version of the database driver. This might not be suitable for your DB in your computer So sit tight, I'll have something up very soon

          Show
          taher Taher Alkhateeb added a comment - Hi Charl, Thank you for the feedback, It's great that you mentioned this item. I'm working on it and will deliver something very soon for this. Hopefully this will be a big improvement to the way it was done in the past because before Gradle Ivy just used to download the latest version of the database driver. This might not be suitable for your DB in your computer So sit tight, I'll have something up very soon
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Charl,

          As I mentioned in my previous comment, the download targets in apache ant which used to exist in the past only provide the latest JDBC driver for each database.

          Also, after further investigation, I realized that each database vendor can provide multiple different drivers used for different purposes.

          So, downloading the correct database driver is environment-centric. That's why in the old Ant scripts you will notice a message if you run one of the download targets that tells you to "Please check that this version is appropriate for you!". Again this shows you that the whole approach is flawed because it is very specific to each computer on each database.

          Therefore, it is my recommendation that you simply download the required database driver yourself. My recommendation for now is just to place it in /framework/base/lib. Or we can create a new top-level folder (/libs) that holds all user downloaded libraries.

          What do you think?

          Show
          taher Taher Alkhateeb added a comment - Hi Charl, As I mentioned in my previous comment, the download targets in apache ant which used to exist in the past only provide the latest JDBC driver for each database. Also, after further investigation, I realized that each database vendor can provide multiple different drivers used for different purposes. So, downloading the correct database driver is environment-centric. That's why in the old Ant scripts you will notice a message if you run one of the download targets that tells you to "Please check that this version is appropriate for you!". Again this shows you that the whole approach is flawed because it is very specific to each computer on each database. Therefore, it is my recommendation that you simply download the required database driver yourself. My recommendation for now is just to place it in /framework/base/lib. Or we can create a new top-level folder (/libs) that holds all user downloaded libraries. What do you think?
          Hide
          pfm.smits Pierre Smits added a comment -

          We had this discussion before, and it seems we're back to there again.

          As always, the project provides an working setup according to the collective and agreement of the community. That is the baseline. We have - with respect to the database drivers - never had feedback (as far as I can remember) that the drivers we suggested did not work.

          We - the project- doesn't know what every environment is on which OFBiz will be implemented by adopters. That is why we have this 'Please check that this version is appropriate for you!' statement as a safeguard. Which is also applicable to every external library download suggestion we provide. And it is similar to the statement we use, when we communicate a new release.

          Show
          pfm.smits Pierre Smits added a comment - We had this discussion before, and it seems we're back to there again. As always, the project provides an working setup according to the collective and agreement of the community. That is the baseline. We have - with respect to the database drivers - never had feedback (as far as I can remember) that the drivers we suggested did not work. We - the project- doesn't know what every environment is on which OFBiz will be implemented by adopters. That is why we have this 'Please check that this version is appropriate for you!' statement as a safeguard. Which is also applicable to every external library download suggestion we provide. And it is similar to the statement we use, when we communicate a new release.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Pierre,

          Thank you for the feedback.

          I repeat what I always mention in these points, if something did exist in the past then it does not mean that it was implemented correctly nor that it was the right thing to do.

          You can have MySQL of a different version on your computer than a MySQL on my computer. Furthermore, you might choose a driver implementation different from my driver. Another point to add, the download targets were only for MySQL, Postgres and Oracle when more data resources are defined in the entity engine

          So, the old implementation was not appropriate for each computer and missing databases. Hence it is fragile.

          As always, I'm not suggesting avoiding implementation due to difficulty (very easy) but due to correctness. If something is too specific to a certain environment, then it is not generic and should not be included.

          With that being said, we should not leave our users confused, and hence I suggest we provide proper documentation on how to switch to a different database vendor. If we have a well written document then people can understand the general idea but also provide the specifics for their environment.

          Show
          taher Taher Alkhateeb added a comment - Hi Pierre, Thank you for the feedback. I repeat what I always mention in these points, if something did exist in the past then it does not mean that it was implemented correctly nor that it was the right thing to do. You can have MySQL of a different version on your computer than a MySQL on my computer. Furthermore, you might choose a driver implementation different from my driver. Another point to add, the download targets were only for MySQL, Postgres and Oracle when more data resources are defined in the entity engine So, the old implementation was not appropriate for each computer and missing databases. Hence it is fragile. As always, I'm not suggesting avoiding implementation due to difficulty (very easy) but due to correctness. If something is too specific to a certain environment, then it is not generic and should not be included. With that being said, we should not leave our users confused, and hence I suggest we provide proper documentation on how to switch to a different database vendor. If we have a well written document then people can understand the general idea but also provide the specifics for their environment.
          Hide
          pfm.smits Pierre Smits added a comment -

          Hi charl Bouwer:

          As a convenience to you, and in anticipation of the implementation of the code change related to this issue, you can put the following piece of code to the end of the list of dependencies in the build.gradle file:

          compile 'mysql:mysql-connector-java:5.1.36'
          

          That was the latest know version of mysql to be working with OFBiz. Please be aware that this might not be a 100% fit with respect to your specific requirments, so be sure to run tests first before deploying in a production environment.

          Best regards,

          Pierre

          Show
          pfm.smits Pierre Smits added a comment - Hi charl Bouwer : As a convenience to you, and in anticipation of the implementation of the code change related to this issue, you can put the following piece of code to the end of the list of dependencies in the build.gradle file: compile 'mysql:mysql-connector-java:5.1.36' That was the latest know version of mysql to be working with OFBiz. Please be aware that this might not be a 100% fit with respect to your specific requirments, so be sure to run tests first before deploying in a production environment. Best regards, Pierre
          Hide
          taher Taher Alkhateeb added a comment -

          Good point Pierre, also works well.

          Show
          taher Taher Alkhateeb added a comment - Good point Pierre, also works well.
          Hide
          pfm.smits Pierre Smits added a comment -

          That argument 'my environment may differ from your argument' is applicable to any existing implementation of OFBiz when it is customised, and thus applicable to any external library download service definition we provide.

          The provided definitions for database driver downloads have been tested and they work. As long as nobody comes forward with issues, we can continue on the path to have the download service in. Like we do regarding any other external library.

          Show
          pfm.smits Pierre Smits added a comment - That argument 'my environment may differ from your argument' is applicable to any existing implementation of OFBiz when it is customised, and thus applicable to any external library download service definition we provide. The provided definitions for database driver downloads have been tested and they work. As long as nobody comes forward with issues, we can continue on the path to have the download service in. Like we do regarding any other external library.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Pierre,

          Can you give me an example of any external library that is dependent on your environment other than the database libraries so we can have a more general solution? I don't know any other libraries that require you to install certain software of a certain version on your computer.

          Show
          taher Taher Alkhateeb added a comment - Hi Pierre, Can you give me an example of any external library that is dependent on your environment other than the database libraries so we can have a more general solution? I don't know any other libraries that require you to install certain software of a certain version on your computer.
          Hide
          pfm.smits Pierre Smits added a comment - - edited

          With respect to DCC I run a external solution requiring me to use an older version of the activemq library than the one suggested in the now removed download definition.

          Show
          pfm.smits Pierre Smits added a comment - - edited With respect to DCC I run a external solution requiring me to use an older version of the activemq library than the one suggested in the now removed download definition.
          Hide
          pfm.smits Pierre Smits added a comment -

          ^ That is the same point I am making. If nobody comes forward with issues, we can stay the course and provide what we have provided before.

          Show
          pfm.smits Pierre Smits added a comment - ^ That is the same point I am making. If nobody comes forward with issues, we can stay the course and provide what we have provided before.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Pierre,

          You are confusing two completely different things here. Using an older or a newer version of a library for your custom requirements is different from installing a specific version of a software on your computer and downloading the specific library needed for this software which is installed on your computer.

          You are asking us to download jar files that are totally dependent on YOUR computer. The downloaded version may or may not work on your computer because it depends on the version of the database installed.

          Hence, there are no other libraries in OFBiz that I am aware of that require installing certain software on your computer. Hence, these libraries are left to the user to determine the best database version.

          Show
          taher Taher Alkhateeb added a comment - Hi Pierre, You are confusing two completely different things here. Using an older or a newer version of a library for your custom requirements is different from installing a specific version of a software on your computer and downloading the specific library needed for this software which is installed on your computer. You are asking us to download jar files that are totally dependent on YOUR computer. The downloaded version may or may not work on your computer because it depends on the version of the database installed. Hence, there are no other libraries in OFBiz that I am aware of that require installing certain software on your computer. Hence, these libraries are left to the user to determine the best database version.
          Hide
          pfm.smits Pierre Smits added a comment -

          HI Taher,

          You are turning a real issue into academic dicussion. And then you asked for an example in: ''Can you give me an example of any external library that is dependent on your environment other than the database libraries so we can have a more general solution?"

          I answered that question.

          Now you are turning it back again to the academic question. In stead of resolving the real issue.

          Show
          pfm.smits Pierre Smits added a comment - HI Taher, You are turning a real issue into academic dicussion. And then you asked for an example in: ''Can you give me an example of any external library that is dependent on your environment other than the database libraries so we can have a more general solution?" I answered that question. Now you are turning it back again to the academic question. In stead of resolving the real issue.
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Pierre,

          I tried to explain this the best I can. If other users are interested after my above explanation and dialog with you then I will happily move things forward.

          Show
          taher Taher Alkhateeb added a comment - Hi Pierre, I tried to explain this the best I can. If other users are interested after my above explanation and dialog with you then I will happily move things forward.
          Hide
          charlb charl Bouwer added a comment -

          I think to keep it simple I am going to just place it in /framework/base/lib in the mean time. fortunately I am not in the stage where I run a production system yet. I am still acquainting myself with the system on a test system. I will need to build a POC system for my business partner over the weekend and I'll use the derby database there to KISS. As soon as I have a running version there I will test 5.1.39 version of the connector on my test system. I am assuming that exporting from the derby and importing to another Db procedure hasn't changed because of Gradle.
          One thing I am sure of when I get to the stage where I deploy to a production environment I will need the ability to compile and deploy to a custom directory, /opt/ofbiz for instance. Having the source and runtime code in the same directory would be problematic for me.
          Currently I am working on Eclipse and suppositories (pun inteded), I mean svn. Put I would prefer to switch over to Intellij and git so that I can test new changes and only then push to a git repository on our production server(s). From there I can deploy the new version of code. I am also planning to use the the tenant system and only add the components that are required by them.

          At the moment the first impression a user gets is that it is way to complicated and feels overwhelmed. The potential clients all have different requirements and the plan is to slowly introduce them to the rest off the system. For instance most don't realise how much the need the HR component.

          Here in Africa most businesses use spreadsheets to run there day to day activities. From invoicing to project management, I have personally seen a government department manage a couple of billion Rand with excel. My target market is SME though and there are a lot of them that desperately need Ofbiz even though they don't realise it yet

          Show
          charlb charl Bouwer added a comment - I think to keep it simple I am going to just place it in /framework/base/lib in the mean time. fortunately I am not in the stage where I run a production system yet. I am still acquainting myself with the system on a test system. I will need to build a POC system for my business partner over the weekend and I'll use the derby database there to KISS. As soon as I have a running version there I will test 5.1.39 version of the connector on my test system. I am assuming that exporting from the derby and importing to another Db procedure hasn't changed because of Gradle. One thing I am sure of when I get to the stage where I deploy to a production environment I will need the ability to compile and deploy to a custom directory, /opt/ofbiz for instance. Having the source and runtime code in the same directory would be problematic for me. Currently I am working on Eclipse and suppositories (pun inteded), I mean svn. Put I would prefer to switch over to Intellij and git so that I can test new changes and only then push to a git repository on our production server(s). From there I can deploy the new version of code. I am also planning to use the the tenant system and only add the components that are required by them. At the moment the first impression a user gets is that it is way to complicated and feels overwhelmed. The potential clients all have different requirements and the plan is to slowly introduce them to the rest off the system. For instance most don't realise how much the need the HR component. Here in Africa most businesses use spreadsheets to run there day to day activities. From invoicing to project management, I have personally seen a government department manage a couple of billion Rand with excel. My target market is SME though and there are a lot of them that desperately need Ofbiz even though they don't realise it yet
          Hide
          jacques.le.roux Jacques Le Roux added a comment - - edited

          I am assuming that exporting from the derby and importing to another Db procedure hasn't changed because of Gradle.

          Right

          I will need the ability to compile and deploy to a custom directory

          Actually the Ant+Ivy task did not deliver this sophistication and I don't think it's needed. Downloading the right driver is enough, then Devops can automate the rest with scripts

          I am also planning to use the the tenant system and only add the components that are required by them.

          About that see my comment at OFBIZ-7773

          I had an SA experience, it was about an hypotetical "Poultry Operating Company". It relied on government subsidy and never flyed. It was though very interesting and I remember the same kind of remarks, a high potential but issues to resolve while doing... If you need a contact in SA I know someone who works with OFBiz since 2007 and lives in Cape Town Area.

          Ah, and we have also Gavin Mabie who is a commiter, he lives in Johannesburg Area

          Good luck

          Show
          jacques.le.roux Jacques Le Roux added a comment - - edited I am assuming that exporting from the derby and importing to another Db procedure hasn't changed because of Gradle. Right I will need the ability to compile and deploy to a custom directory Actually the Ant+Ivy task did not deliver this sophistication and I don't think it's needed. Downloading the right driver is enough, then Devops can automate the rest with scripts I am also planning to use the the tenant system and only add the components that are required by them. About that see my comment at OFBIZ-7773 I had an SA experience, it was about an hypotetical "Poultry Operating Company". It relied on government subsidy and never flyed. It was though very interesting and I remember the same kind of remarks, a high potential but issues to resolve while doing... If you need a contact in SA I know someone who works with OFBiz since 2007 and lives in Cape Town Area. Ah, and we have also Gavin Mabie who is a commiter, he lives in Johannesburg Area Good luck
          Hide
          pfm.smits Pierre Smits added a comment -

          Hi charl Bouwer You can use both Intellij and git to work with OFBiz code.

          The project also has git mirrors and these are made available on GitHub, You can start from here: https://github.com/apache/ofbiz

          Best regards,

          Pierre

          Show
          pfm.smits Pierre Smits added a comment - Hi charl Bouwer You can use both Intellij and git to work with OFBiz code. The project also has git mirrors and these are made available on GitHub, You can start from here: https://github.com/apache/ofbiz Best regards, Pierre
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          I was wondering why we have commons-httpclient:3.1 in the dependencies? It's not in the list above and was removed with OFBIZ-6755. I checked with "gradlew dependencies" and see it comes from external dependency which still relies on it. But does that means that we should have it as a lib? It was absent in trunk before the Gradle changes. I'll check if we have such other cases...

          Show
          jacques.le.roux Jacques Le Roux added a comment - I was wondering why we have commons-httpclient:3.1 in the dependencies? It's not in the list above and was removed with OFBIZ-6755 . I checked with "gradlew dependencies" and see it comes from external dependency which still relies on it. But does that means that we should have it as a lib? It was absent in trunk before the Gradle changes. I'll check if we have such other cases...
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Jacques,

          I believe we definitely have more cases like this one. Now you can go to each library and set the exclusions by hand. However I think the original dependencies and libraries were not properly setup because they were scattered among different components and hand picked by different individuals. Having automatic dependency resolution means you don't worry about what gets pulled.

          Also the dependencies graph because of the huge number of libraries in OFBiz is very complex. So I would recommend instead of trying to replicate what we had before dependency management we instead focus on actually removing as many libraries as we can. 229 libraries is a number I don't recall seeing in any other project.

          Show
          taher Taher Alkhateeb added a comment - Hi Jacques, I believe we definitely have more cases like this one. Now you can go to each library and set the exclusions by hand. However I think the original dependencies and libraries were not properly setup because they were scattered among different components and hand picked by different individuals. Having automatic dependency resolution means you don't worry about what gets pulled. Also the dependencies graph because of the huge number of libraries in OFBiz is very complex. So I would recommend instead of trying to replicate what we had before dependency management we instead focus on actually removing as many libraries as we can. 229 libraries is a number I don't recall seeing in any other project.
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Hi Taher, OK thanks. I will begin by removing this one.

          Show
          jacques.le.roux Jacques Le Roux added a comment - Hi Taher, OK thanks. I will begin by removing this one.
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Hi Taher, yes I think so, but why do we have + System.lineSeparator()? Is that needed for the file construction?

          Show
          jacques.le.roux Jacques Le Roux added a comment - Hi Taher, yes I think so, but why do we have + System.lineSeparator()? Is that needed for the file construction?
          Hide
          taher Taher Alkhateeb added a comment -

          Hi Jacques,

          no I just wanted to break it into newlines. Now that you mentioned it maybe it is better to actually generate html instead? I did it quickly and did not think too much about formatting.

          Show
          taher Taher Alkhateeb added a comment - Hi Jacques, no I just wanted to break it into newlines. Now that you mentioned it maybe it is better to actually generate html instead? I did it quickly and did not think too much about formatting.
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Oh forget it, completly forgot that it generates a FTL file. Better indeed to have it on separated lines as long as it's rendered on one line.

          Show
          jacques.le.roux Jacques Le Roux added a comment - Oh forget it, completly forgot that it generates a FTL file. Better indeed to have it on separated lines as long as it's rendered on one line.
          Hide
          taher Taher Alkhateeb added a comment -

          Extremely happy to announce that I got BIRT working with all tests passing in r1753886.

          After lots of investigation I realized that BIRT from JCenter pulls two offending dependencies:

          org.eclipse.birt.runtime.3_7_1:derby
          org.eclipse.birt.runtime.3_7_1:org.apache.batik.pdf

          As soon as I removed these two dependencies everything ran correctly including tests. We are very, very close to migrating all Jars, only 19 remain now

          Show
          taher Taher Alkhateeb added a comment - Extremely happy to announce that I got BIRT working with all tests passing in r1753886. After lots of investigation I realized that BIRT from JCenter pulls two offending dependencies: org.eclipse.birt.runtime.3_7_1:derby org.eclipse.birt.runtime.3_7_1:org.apache.batik.pdf As soon as I removed these two dependencies everything ran correctly including tests. We are very, very close to migrating all Jars, only 19 remain now
          Hide
          taher Taher Alkhateeb added a comment -

          After the work on Migrating BIRT, we now have the following remaining libraries:

          ./tools/demo-backup/contrast-rO0.jar
          ./tools/security/notsoserial/notsoserial-1.0-SNAPSHOT.jar
          ./specialpurpose/cmssite/template/docbook/extensions/webhelpindexer.jar
          ./specialpurpose/cmssite/template/docbook/extensions/tagsoup-1.2.1.jar
          ./specialpurpose/cmssite/template/docbook/extensions/lucene-analyzers-3.0.0.jar
          ./specialpurpose/cmssite/template/docbook/extensions/xalan-2.7.2.jar
          ./specialpurpose/cmssite/template/docbook/extensions/saxon65.jar
          ./specialpurpose/cmssite/template/docbook/extensions/lucene-core-3.0.0.jar
          ./specialpurpose/pos/lib/jpos18-controls.jar
          ./specialpurpose/pos/lib/XuiCoreSwing-v3.2rc2b.jar
          ./specialpurpose/pos/lib/jcl.jar
          ./specialpurpose/pos/lib/looks-2.0.2.jar
          ./specialpurpose/pos/lib/XuiOptional-v3.2rc2b.jar
          ./specialpurpose/ldap/lib/cas-server-core-3.3.jar
          ./specialpurpose/ebaystore/lib/helper.jar
          ./specialpurpose/ebaystore/lib/attributes.jar
          ./specialpurpose/ebaystore/lib/ebaysdkcore.jar
          ./specialpurpose/ebaystore/lib/ebaycalls.jar
          ./framework/base/lib/jpim-0.1.jar

          I will apply the following:

          • Delete ./tools/demo-backup/contrast-rO0.jar
          • POS will be removed to attic as per the discussion threads including the latest one to user ML by Jacques

          This means the jars that are not yet resolved, and we need to take a decision on are:

          1. ./tools/security/notsoserial/notsoserial-1.0-SNAPSHOT.jar
          2. ./specialpurpose/cmssite/template/docbook/extensions/webhelpindexer.jar
          3. ./specialpurpose/cmssite/template/docbook/extensions/tagsoup-1.2.1.jar
          4. ./specialpurpose/cmssite/template/docbook/extensions/lucene-analyzers-3.0.0.jar
          5. ./specialpurpose/cmssite/template/docbook/extensions/xalan-2.7.2.jar
          6. ./specialpurpose/cmssite/template/docbook/extensions/saxon65.jar
          7. ./specialpurpose/cmssite/template/docbook/extensions/lucene-core-3.0.0.jar
          8. ./specialpurpose/ldap/lib/cas-server-core-3.3.jar
          9. ./specialpurpose/ebaystore/lib/helper.jar
          10. ./specialpurpose/ebaystore/lib/attributes.jar
          11. ./specialpurpose/ebaystore/lib/ebaysdkcore.jar
          12. ./specialpurpose/ebaystore/lib/ebaycalls.jar
          13. ./framework/base/lib/jpim-0.1.jar
          Show
          taher Taher Alkhateeb added a comment - After the work on Migrating BIRT, we now have the following remaining libraries: ./tools/demo-backup/contrast-rO0.jar ./tools/security/notsoserial/notsoserial-1.0-SNAPSHOT.jar ./specialpurpose/cmssite/template/docbook/extensions/webhelpindexer.jar ./specialpurpose/cmssite/template/docbook/extensions/tagsoup-1.2.1.jar ./specialpurpose/cmssite/template/docbook/extensions/lucene-analyzers-3.0.0.jar ./specialpurpose/cmssite/template/docbook/extensions/xalan-2.7.2.jar ./specialpurpose/cmssite/template/docbook/extensions/saxon65.jar ./specialpurpose/cmssite/template/docbook/extensions/lucene-core-3.0.0.jar ./specialpurpose/pos/lib/jpos18-controls.jar ./specialpurpose/pos/lib/XuiCoreSwing-v3.2rc2b.jar ./specialpurpose/pos/lib/jcl.jar ./specialpurpose/pos/lib/looks-2.0.2.jar ./specialpurpose/pos/lib/XuiOptional-v3.2rc2b.jar ./specialpurpose/ldap/lib/cas-server-core-3.3.jar ./specialpurpose/ebaystore/lib/helper.jar ./specialpurpose/ebaystore/lib/attributes.jar ./specialpurpose/ebaystore/lib/ebaysdkcore.jar ./specialpurpose/ebaystore/lib/ebaycalls.jar ./framework/base/lib/jpim-0.1.jar I will apply the following: Delete ./tools/demo-backup/contrast-rO0.jar POS will be removed to attic as per the discussion threads including the latest one to user ML by Jacques This means the jars that are not yet resolved, and we need to take a decision on are: ./tools/security/notsoserial/notsoserial-1.0-SNAPSHOT.jar ./specialpurpose/cmssite/template/docbook/extensions/webhelpindexer.jar ./specialpurpose/cmssite/template/docbook/extensions/tagsoup-1.2.1.jar ./specialpurpose/cmssite/template/docbook/extensions/lucene-analyzers-3.0.0.jar ./specialpurpose/cmssite/template/docbook/extensions/xalan-2.7.2.jar ./specialpurpose/cmssite/template/docbook/extensions/saxon65.jar ./specialpurpose/cmssite/template/docbook/extensions/lucene-core-3.0.0.jar ./specialpurpose/ldap/lib/cas-server-core-3.3.jar ./specialpurpose/ebaystore/lib/helper.jar ./specialpurpose/ebaystore/lib/attributes.jar ./specialpurpose/ebaystore/lib/ebaysdkcore.jar ./specialpurpose/ebaystore/lib/ebaycalls.jar ./framework/base/lib/jpim-0.1.jar
          Hide
          taher Taher Alkhateeb added a comment -

          Okay, LDAP library (cas-server-core) is now replaced with a remote one in 1753944 and again all tests pass

          Show
          taher Taher Alkhateeb added a comment - Okay, LDAP library (cas-server-core) is now replaced with a remote one in 1753944 and again all tests pass
          Hide
          taher Taher Alkhateeb added a comment -

          More fine-tuning and converting from compile to runtime for dependencies in r1754640.

          There are now 61 runtime dependencies in build.gradle which I suspect are not necessary but cannot confirm for sure. So I added a TODO comment on top of these dependencies noting that I think they should be deleted eventually if everyone confirms they are not necessary.

          All help is appreciated in that area.

          Show
          taher Taher Alkhateeb added a comment - More fine-tuning and converting from compile to runtime for dependencies in r1754640. There are now 61 runtime dependencies in build.gradle which I suspect are not necessary but cannot confirm for sure. So I added a TODO comment on top of these dependencies noting that I think they should be deleted eventually if everyone confirms they are not necessary. All help is appreciated in that area.
          Hide
          taher Taher Alkhateeb added a comment -

          I have removed 42 libraries not needed (redundant) in r1757074 from the master build.gradle script as they are pulled automatically from dependencies. This makes the script nicer and a little cleaner. Attached are two files to show the dependency graph before and after

          Show
          taher Taher Alkhateeb added a comment - I have removed 42 libraries not needed (redundant) in r1757074 from the master build.gradle script as they are pulled automatically from dependencies. This makes the script nicer and a little cleaner. Attached are two files to show the dependency graph before and after
          Hide
          taher Taher Alkhateeb added a comment -

          Wow, I'm very late in this, but I just make a commit in r1758102 to add all themes as gradle subprojects. I just completely forgot that themes are ofbiz components and as such should also be treated as sub projects.

          Granted this does not have any effect because themes do not hold any java sources. Never the less, they are ofbiz components that might want to use a build.gradle for certain tasks in the future, hence adding them.

          Show
          taher Taher Alkhateeb added a comment - Wow, I'm very late in this, but I just make a commit in r1758102 to add all themes as gradle subprojects. I just completely forgot that themes are ofbiz components and as such should also be treated as sub projects. Granted this does not have any effect because themes do not hold any java sources. Never the less, they are ofbiz components that might want to use a build.gradle for certain tasks in the future, hence adding them.
          Hide
          taher Taher Alkhateeb added a comment -

          This issue is more-or-less done. Gradle is now fully operational with most issues resolved correctly and implemented both locally and in buildbot. almost all libraries are gone except for cmssite and ebaystore, and we are reaching a level of maturity in the code base around Gradle.

          So I am going to close this issue soon unless you want to keep it open for any reason.

          Show
          taher Taher Alkhateeb added a comment - This issue is more-or-less done. Gradle is now fully operational with most issues resolved correctly and implemented both locally and in buildbot. almost all libraries are gone except for cmssite and ebaystore, and we are reaching a level of maturity in the code base around Gradle. So I am going to close this issue soon unless you want to keep it open for any reason.
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Though there are still open subtasks, I see no problems closing it

          Show
          jacques.le.roux Jacques Le Roux added a comment - Though there are still open subtasks, I see no problems closing it
          Hide
          taher Taher Alkhateeb added a comment -

          Although there are sub tasks linked to this task, they are not necessary for the primary purpose of completing a "migration from ant to gradle". Hence closing

          Show
          taher Taher Alkhateeb added a comment - Although there are sub tasks linked to this task, they are not necessary for the primary purpose of completing a "migration from ant to gradle". Hence closing

            People

            • Assignee:
              taher Taher Alkhateeb
              Reporter:
              taher Taher Alkhateeb
            • Votes:
              4 Vote for this issue
              Watchers:
              15 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development