I understood that failing subproject simply doesn`t know anything about
'test-shared' project couse it is evaluated in alphabetical order before
'test-shared'. So I need a way how to define project dependency during
current project evaluation in root build.gradle. If I define this dependency
in subproject build.gradle, it will work I guess.
Narco wrote:
>
> Ok, plugin is what I need I guess. Started to migrate my project script to
> plugin. It is not so simple when plugin has its own subprojects{}.
> Annoying problem is that custom plugin is not printing user readable
> exceptions. Exception just points to line where custom plugin call is
> defined. Should I configure logger to some special way maybe?
>
> Simplest project configurations are building fine. I have stuck in adding
> compile dependency project to current subproject in plugin scope. This is
> my plugin:
>
> public class CsPlugin implements Plugin {
>
> def void use(Project project, ProjectPluginsContainer
> projectPluginsHandler) {
> project.subprojects {
> repositories {
> flatDir name: 'lib', dirs: 'lib'
> }
>
> ...
> usePlugin('java')
> delegate.dependencies {
> compile project(':test-shared')
> }
> ...
> }}}
>
> After then I create jar with classes and add it to my project:
> buildscript {
> repositories {
> flatDir name: 'lib', dirs: 'lib'
> }
> dependencies {
> classpath name: 'Main', version: 'unspecified'
> }
> }
> usePlugin(CsPlugin)
> allprojects {
> version = '3.0.1'
> group = 'lv.ctco.module'
> }
>
> The script throws exception:
> * Where:
> Build file 'C:\work\perf\SCM\Build\scripts\projects\Main\MDL\build.gradle'
> line:
> 35
>
> * What went wrong:
> A problem occurred evaluating root project 'MDL'.
> Cause: No signature of method:
> org.gradle.api.internal.artifacts.dsl.dependencie
> s.DefaultDependencyHandler.subproject() is applicable for argument types:
> (java.
> lang.String) values: [:test-shared]
>
> The plugin doesn`t see this project definition but I know it is defined in
> settings.gradle of project. Please help!
>
>
>
> Adam Murdoch-2 wrote:
>>
>>
>>
>> Narco wrote:
>>> Your help is still required.
>>>
>>>
>>> Narco wrote:
>>>
>>>> Anybody?
>>>>
>>>>
>>>> Narco wrote:
>>>>
>>>>> Hello!
>>>>> I need some guru help now. My goal initially was to develop gradle
>>>>> scripts as standalone package which after then can be added to any
>>>>> multi-project in build classpath to build with default
>>>>> configuration/layout/options which I have defined.
>>>>> To archieve that I have developed root/build.gradle script which works
>>>>> fine with my root/* projects and has no direct definition about any
>>>>> projects. Almost every root/* project (eg root/app/,
>>>>> root/ejb-module-session/) has build.gradle script to define
>>>>> dependencies
>>>>> between other projects and property file to mark its behaviour. Also I
>>>>> have root/setting.gradle where all my projects are defined.
>>>>> Now I want to make standalone file as discussed above.
>>
>> This sound pretty much like what a plugin does: it contains some build
>> logic which is reusable across multiple builds.
>>
>> At the moment, there's no way to implement a plugin as a script. You
>> need to implement it as a class.
>>
>>>>> As I understood
>>>>> from documentation buildSrc folder works absolutely the same if I
>>>>> would
>>>>> be adding jar with compiled build scripts to buildScript() so I
>>>>> started
>>>>> in this way.
>>>>>
>>
>> It contains compiled classes, not compiled build scripts. You use them
>> as you would any class. Gradle doesn't automatically apply any scripts
>> that it finds in buildSrc (though it might be good if there was
>> somewhere you could add scripts).
>>
>> You have a couple of options at this stage:
>>
>> - Implement your reusable code as a plugin.
>>
>> - Use GroovyShell in your root build script to execute the shared script.
>>
>>
>>>>> Adding to root/buildSrc/build.gradle did not worked at all. Gradle
>>>>> just
>>>>> says that none of default tasks (clean, compile etc) is defined.
>>>>> Adding to root/buildSrc/src/main/groovy started to process something
>>>>> but
>>>>> still gives another bad results:
>>>>> C:\work\perf\SCM\Build\Ant\Project\Release_2_0_1\MDL>gradle clean
>>>>> [ant:jar] Warning: skipping jar archive
>>>>> C:\work\perf\SCM\Build\Ant\Project\Relea
>>>>> se_2_0_1\MDL\buildSrc\build\libs\buildSrc-SNAPSHOT.jar because no
>>>>> files
>>>>> were inc
>>>>> luded.
>>>>> [ant:jar] Warning: skipping jar archive
>>>>> C:\work\perf\SCM\Build\Ant\Project\Relea
>>>>> se_2_0_1\MDL\buildSrc\build\libs\buildSrc-SNAPSHOT.jar because no
>>>>> files
>>>>> were inc
>>>>> luded.
>>>>>
>>>>> FAILURE: Build failed with an exception.
>>>>>
>>>>> * Where:
>>>>> Build file
>>>>> 'C:\work\perf\SCM\Build\Ant\Project\Release_2_0_1\MDL\ejb-module-sess
>>>>> ion\build.gradle' line: 10
>>>>>
>>>>> * What went wrong:
>>>>> A problem occurred evaluating project ':ejb-module-session'.
>>>>> Cause: No signature of method:
>>>>> org.gradle.api.internal.artifacts.dsl.dependencie
>>>>> s.DefaultDependencyHandler.compile() is applicable for argument types:
>>>>> (org.grad
>>>>> le.api.internal.artifacts.dependencies.DefaultProjectDependency)
>>>>> values:
>>>>> [Defaul
>>>>> tProjectDependency{dependencyProject='project ':app'',
>>>>> configurationdefault'}]
>>>>>
>>>>> * Try:
>>>>> Run with -s or -d option to get more details. Run with -S option to
>>>>> get
>>>>> the full
>>>>> (very verbose) stacktrace.
>>>>>
>>>>> BUILD FAILED
>>>>>
>>>>> Total time: 3.594 secs
>>>>>
>>>>> One more thing to think about. The functionality I need is not only
>>>>> common multi-project build but also ability to define some
>>>>> multi-project
>>>>> specific behavior in root/build.gradle or project specific in
>>>>> root/app/build.gradle for example. A half of year ago when starting to
>>>>> investigate gradle Hans was sure that this is possible. Now I`m ready
>>>>> to
>>>>> implement it!
>>>>>
>>>>> Please help me asap!
>>>>>
>>>>>
>>>>
>>>
>>>
>>
>> --
>> Adam Murdoch
>> Gradle Developer
>> http://www.gradle.org
>>
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/buildsrc-and-buildScript%28%29-usability-for-multi-project-builds-tp25888572p25995963.html
Sent from the gradle-user mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email