Hi Jacques, hi Taher,

It’s true that compile and runtime are the most used types of dependencies but 
that doesn’t mean that add-on modules won’t require compileOnly dependencies.

Take for example com.google.code.findbugs:jsr305 (JSR 305) which provides a set 
of annotations to assist defect detection tools. These annotations are only 
required during development, compile time and other defect detection tools.  I 
use IntelliJ for development and they do have an OOTB support for these 
annotations. 

This is just one example where I needed compileOnly dependency. 

If there is a better way to deal with this in Ofbiz am all ears.


--Valery

On 11/20/16, 02:25, "Jacques Le Roux" <jacques.le.r...@les7arts.com> wrote:

    Yes it might be the case indeed.
    
    I looked for possible compileOnly libs before committing. I must say I did 
not find anyone clearly.
    
    I thought about the Junit ones, but that would be testCompileOnly (needed I 
guess) and I found some use case in no test code but we can maybe change 
    that.
    
    I want also to check javax.servlet:servlet-api
    
    Anyway before reverting we can wait a bit to see if Valery has done some 
work for OOTB libs (as I asked few days ago). Else I don't understand why he 
    would want to push that instead of only using it in his own component/s.
    
    Jacques
    
    
    Le 20/11/2016 à 11:00, Taher Alkhateeb a écrit :
    > I don't think we currently have any compileOnly libs, and I would think we
    > would rarely ever need those.
    >
    > So, I recommend removing them, but I also recommend not to introduce
    > anything unless it is "used" or "will very likely be used soon" (the YAGNI
    > principle)
    >
    > On Sun, Nov 20, 2016 at 12:52 PM, Jacques Le Roux <
    > jacques.le.r...@les7arts.com> wrote:
    >
    >> Hi Taher,
    >>
    >> I was wondering if this could not be helpful to OOTB minimise the
    >> dependencies. I must say I have still to check which libs is compile 
only,
    >> any ideas?
    >>
    >> Jacques
    >>
    >>
    >>
    >> Le 20/11/2016 à 10:28, Taher Alkhateeb a écrit :
    >>
    >>> Hi Jacques,
    >>>
    >>> I'm not sure this is a very good idea. Gradle supports many other types 
of
    >>> dependencies (compile, compileOnly, testCompile, testCompileOnly,
    >>> compileClasspath, testRuntime, etc ...)
    >>>
    >>> I think the two most common uses are compile and runtime (both needed 
and
    >>> used). Other kinds should be declared in build.gradle for plugins only
    >>> when
    >>> a need arises, otherwise this is just code bloat. I would rather only 
add
    >>> things when we actually need them.
    >>>
    >>> On Sun, Nov 20, 2016 at 12:05 PM, <jler...@apache.org> wrote:
    >>>
    >>> Author: jleroux
    >>>> Date: Sun Nov 20 09:05:31 2016
    >>>> New Revision: 1770539
    >>>>
    >>>> URL: http://svn.apache.org/viewvc?rev=1770539&view=rev
    >>>> Log:
    >>>> Implemented: Build framework (Plugin mechanism) missing gradle
    >>>> compileOnly
    >>>> dependency feature
    >>>> (OFBIZ-9118)
    >>>>
    >>>> The current build framework only supports compile and runtime
    >>>> dependencies
    >>>> but
    >>>> doesn't allow you to declare compile only dependencies which is 
important
    >>>> for
    >>>> non-transitive dependencies used only at compilation time.
    >>>>
    >>>> Thanks: Valery Chenzo
    >>>>
    >>>> Modified:
    >>>>       ofbiz/trunk/build.gradle
    >>>>
    >>>> Modified: ofbiz/trunk/build.gradle
    >>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/build.gradle?rev=
    >>>> 1770539&r1=1770538&r2=1770539&view=diff
    >>>> ============================================================
    >>>> ==================
    >>>> --- ofbiz/trunk/build.gradle (original)
    >>>> +++ ofbiz/trunk/build.gradle Sun Nov 20 09:05:31 2016
    >>>> @@ -67,6 +67,8 @@ subprojects {
    >>>>            pluginLibsCompile
    >>>>            // runtime plugin libraries
    >>>>            pluginLibsRuntime
    >>>> +        //compile-only libraries
    >>>> +        pluginLibsCompileOnly
    >>>>        }
    >>>>    }
    >>>>
    >>>> @@ -167,6 +169,7 @@ dependencies {
    >>>>        subprojects.each { subProject ->
    >>>>            compile project(path: subProject.path, configuration:
    >>>> 'pluginLibsCompile')
    >>>>            runtime project(path: subProject.path, configuration:
    >>>> 'pluginLibsRuntime')
    >>>> +        compileOnly project(path: subProject.path, configuration:
    >>>> 'pluginLibsCompileOnly')
    >>>>        }
    >>>>
    >>>>        // libs needed for junitreport
    >>>>
    >>>>
    >>>>
    >>>>
    
    


Reply via email to