GitHub user dlaboss reopened a pull request:

    https://github.com/apache/incubator-edgent/pull/190

    Edgent-240 [gradle] [WIP] Overhaul dependency specification and handling

    The upshot is to do like the ant-based scripts and specify
    inter-project, core-ext, and project-private-ext
    dependencies against jars in the target dir.
    The original conversion specified on inter-project dependencies on
    "projects" (hence their artifacts not in the target-dir) and that caused
    a host of issues.
    
    With the changes things like manifest-classpath generation are
    simplified and overall the gradle build now adhears to the policies:
    - Edgent projects depend on other project's jars in the target-dir, not
    their classes
    - Edgent project jars have a manifest-classpath that handles the
    project's "private" inter-project dependencies as well as the project's
    "private" external component dependencies.
    - We build a target dir that includes the project's jar as well as the
    project's external dependency jars
    - The tests compile and run against the project jars in the target dir
    (as external/integration test code would).
    - The samples compile and run against the project jars in the target dir
    (as user code would).
    
    All seems fine including when building and testing with
    ANDROID_SDK_PLATFORM and DERBY_HOME set:
    - all tests pass (sans manual run of kafka tests)
    - sample scripts seem to run appropriately
    - console comes up
    
    TODOs
    - edgent.android.{topology,hardware}.jar manifest classpath and the
    "android.jar" - compared to ant-build?
    
    
    More details of the changes...
    
    - define addTargetDirProjectJarDependency(),
    addTargetDirExtJarDependency(), addTargetDirCoreExtDependency(),
    addTargetDirCoreExtDependencies(), addProjectExtDependency()
    - change all build.gradle to use them
    - configure common sample dependencies in root build.gradle
    - adapt manifest classpath generation in light of above
    - rework how common_ext_dependencies files get added to target-dir/ext
    
    Other cleanup,etc
    - generate project jar/war directly into targetdir with the correct name
    (remove "copy/rename" of jar created by default far task)
    - fix ant -> gradle conversion of api/function project
    - add previously (benign) absent api/function dependency from
    api/topology
    - remove updateTargetDir task -- just add processing as "doLast" to the
    assemble task
    - other root build.gradle refactoring for hygiene
    - fix issues caused by kafka's transitive dependencies
    - update connectors:iotp to watson-iot:0.1.5 - initial motivation was to
    cleanup the fact that 0.1.1 had dependency on a mqttv3 SNAPSHOT version
    - fix aggregateJavadoc processing warnings
    - fix test runtime classpath so it uses the project's target-dir jar

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/dlaboss/incubator-edgent gradleSamplesAndMore

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-edgent/pull/190.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #190
    
----
commit a08252e10ad00c26892723dc1d87b1d980b2923b
Author: Dale LaBossiere <dlab...@us.ibm.com>
Date:   2016-09-14T19:00:46Z

    Edgent-240 [gradle] [WIP] Overhaul dependency specification and handling
    
    The upshot is to do like the ant-based scripts and specify
    inter-project, core-ext, and project-private-ext
    dependencies against jars in the target dir.
    The original conversion specified on inter-project dependencies on
    "projects" (hence their artifacts not in the target-dir) and that caused
    a host of issues.
    
    With the changes things like manifest-classpath generation are
    simplified and overall the gradle build now adhears to the policies:
    - Edgent projects depend on other project's jars in the target-dir, not
    their classes
    - Edgent project jars have a manifest-classpath that handles the
    project's "private" inter-project dependencies as well as the project's
    "private" external component dependencies.
    - We build a target dir that includes the project's jar as well as the
    project's external dependency jars
    - The tests compile and run against the project jars in the target dir
    (as external/integration test code would).  Well bit more to do there.
    - The samples compile and run against the project jars in the target dir
    (as user code would).
    
    All seems fine including when building and testing with
    ANDROID_SDK_PLATFORM and DERBY_HOME set:
    - all tests pass (sans manual run of kafka tests)
    - sample scripts seem to run appropriately
    - console comes up
    
    TODOs
    - look into javadoc task warnings
    - test's classpath is still including its project's build/main/classes
    - edgent.android.{topology,hardware}.jar manifest classpath and the
    "android.jar" - compared to ant-build?
    
    
    More details of the changes...
    
    - define addTargetDirProjectJarDependency(),
    addTargetDirExtJarDependency(), addTargetDirCoreExtDependency(),
    addTargetDirCoreExtDependencies(), addProjectExtDependency()
    - change all build.gradle to use them
    - configure common sample dependencies in root build.gradle
    - adapt manifest classpath generation in light of above
    - rework how common_ext_dependencies files get added to target-dir/ext
    
    Other cleanup,etc
    - generate project jar/war directly into targetdir with the correct name
    (remove "copy/rename" of jar created by default far task)
    - fix ant -> gradle conversion of api/function project
    - add previously (benign) absent api/function dependency from
    api/topology
    - remove updateTargetDir task -- just add processing as "doLast" to the
    assemble task
    - other root build.gradle refactoring for hygiene
    - fix issues caused by kafka's transitive dependencies
    - update connectors:iotp to watson-iot:0.1.5 - initial motivation was to
    cleanup the fact that 0.1.1 had dependency on a mqttv3 SNAPSHOT version

commit 740fcd116ab189890477344475c1707d55b9a4d7
Author: Dale LaBossiere <dlab...@us.ibm.com>
Date:   2016-09-15T13:06:47Z

    Fix aggregateJavadoc processing warnings (not the javadoc warnings)

commit e83f24297d9c8e9a901575e17d0b32b665a038c4
Author: Dale LaBossiere <dlab...@us.ibm.com>
Date:   2016-09-15T19:06:39Z

    remove builddir/classses/main from the test runtime classpath
    
    makes tests fully run against the target-dir jars

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to