<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-31413</id>
	<title>Nabble - gradle-dev</title>
	<updated>2009-11-26T13:07:46Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/gradle-dev-f31413.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/gradle-dev-f31413.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26534891</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-26T13:07:46Z</published>
	<updated>2009-11-26T13:07:46Z</updated>
	<author>
		<name>Adam Murdoch-2</name>
	</author>
	<content type="html">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;meta content=&quot;text/html;charset=ISO-8859-1&quot; http-equiv=&quot;Content-Type&quot;&gt;
&lt;/head&gt;
&lt;body bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;
&lt;br&gt;
&lt;br&gt;
John Murph wrote:
&lt;blockquote cite=&quot;mid:efed17330911240713u55ff1677v20b455f3a193a00c@mail.gmail.com&quot; type=&quot;cite&quot;&gt;On Mon, Nov 23, 2009 at 4:20 PM, Adam Murdoch &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26534891&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;a@...&lt;/a&gt;&amp;gt;&lt;/span&gt;
wrote:&lt;br&gt;
  &lt;div class=&quot;gmail_quote&quot;&gt;
  &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
    &lt;div bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;
    &lt;div&gt;
    &lt;div class=&quot;h5&quot;&gt;&lt;br&gt;
    &lt;br&gt;
    &lt;/div&gt;
    &lt;/div&gt;
BTW, I'm not suggesting you do all this work, as you really only need
the equivalent of configure(object, scriptPath). I'm just trying to
figure out a direction for this stuff.
    &lt;div class=&quot;im&quot;&gt;&lt;br&gt;
    &lt;/div&gt;
    &lt;/div&gt;
  &lt;/blockquote&gt;
  &lt;div&gt;&lt;br&gt;
LOL, thanks Adam.&amp;nbsp; I was worried about 2 seconds, then realized that
there was no way you wanted me to do all that.&amp;nbsp; I think I like the
unification of these items, they are obviously very related.&amp;nbsp; What
class would have the configure(*) methods?&amp;nbsp; This would need to be
available to almost everything.&amp;nbsp; Your unification thoughts almost
relegate init/settings/build scripts to different flavors of a single
thing.&amp;nbsp; Maybe a common base class for the delegate objects for these
scripts?&amp;nbsp; Or maybe composition?&amp;nbsp; I think I prefer composition here, but
there are several methods that will need to be delegated.&amp;nbsp; Maybe a
&quot;ConfigurableScript&quot; interface to describe the method signatures, a
&quot;ScriptExecutor&quot; class that contains the implementation (and implements
the &quot;ConfigurableScript&quot; interface).&amp;nbsp; Then each of the appropriate
classes can implement the interface and delegate those methods to the
class.&amp;nbsp; Seems inelegant, but reasonable.&lt;br&gt;
  &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
This is a good plan. Every script that Gradle compiles ends up as a
subclass of org.gradle.groovy.scripts.Script, so you could change that
to implement ConfigurableScript. This means that the configure(*)
methods will be available from every script. Then, you could perhaps
just change Project or Gradle to implement ConfigurableScript as well,
so that the configure(*) methods are available outside the scripts (eg
plugins, java classes, etc).&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;pre class=&quot;moz-signature&quot; cols=&quot;72&quot;&gt;-- 
Adam Murdoch
Gradle Developer
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;
&lt;/pre&gt;
&lt;/body&gt;
&lt;/html&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26534891.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26501901</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-24T08:21:58Z</published>
	<updated>2009-11-24T08:21:58Z</updated>
	<author>
		<name>Russel Winder-4</name>
	</author>
	<content type="html">On Tue, 2009-11-24 at 09:15 -0600, John Murph wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Thanks Tomek! &amp;nbsp;My initial research shows that TestNG is much better in
&lt;br&gt;&amp;gt; this respect than JUnit, so I don't think it'll be a problem.
&lt;br&gt;&amp;gt; 
&lt;br&gt;First let us remove the extraneous words:
&lt;br&gt;&lt;br&gt;&amp;quot; . . . TestNG is much better . . . than JUnit. . . . &amp;quot;
&lt;br&gt;&lt;br&gt;then let us elide the elisions:
&lt;br&gt;&lt;br&gt;&amp;quot;TestNG is much better than JUnit.&amp;quot;
&lt;br&gt;&lt;br&gt;Now as this is a true statement it would be really cool if everyone
&lt;br&gt;thought &amp;quot;How do we do this for TestNG?&amp;quot; and then as a follow up &amp;quot;How do
&lt;br&gt;we do this for JUnit&amp;quot;.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Russel.
&lt;br&gt;=============================================================================
&lt;br&gt;Dr Russel Winder &amp;nbsp; &amp;nbsp; &amp;nbsp;Partner
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xmpp: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26501901&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;russel@...&lt;/a&gt;
&lt;br&gt;Concertant LLP &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t: +44 20 7585 2200, +44 20 7193 9203
&lt;br&gt;41 Buckmaster Road, &amp;nbsp; f: +44 8700 516 084 &amp;nbsp; voip: sip:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26501901&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;russel.winder@...&lt;/a&gt;
&lt;br&gt;London SW11 1EN, UK &amp;nbsp; m: +44 7770 465 077 &amp;nbsp; skype: russel_winder
&lt;br&gt;&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26501901/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26501901.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26497689</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-24T07:15:21Z</published>
	<updated>2009-11-24T07:15:21Z</updated>
	<author>
		<name>John Murph</name>
	</author>
	<content type="html">On Tue, Nov 24, 2009 at 12:22 AM, Tomek Kaczanowski &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26497689&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kaczanowski.tomek@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
Hi John&lt;br&gt;
&lt;br&gt;
TestNG definitely support listeners ! See&lt;br&gt;
&lt;a href=&quot;http://testng.org/doc/documentation-main.html#testng-listeners&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://testng.org/doc/documentation-main.html#testng-listeners&lt;/a&gt;&lt;br&gt;
&lt;br clear=&quot;all&quot;&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;Thanks Tomek!  My initial research shows that TestNG is much better in
this respect than JUnit, so I don&amp;#39;t think it&amp;#39;ll be a problem.&lt;br&gt;&lt;br&gt;&lt;br&gt;-- &lt;br&gt;John Murph&lt;br&gt;Automated Logic Research Team&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26497689.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26497647</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-24T07:13:36Z</published>
	<updated>2009-11-24T07:13:36Z</updated>
	<author>
		<name>John Murph</name>
	</author>
	<content type="html">On Mon, Nov 23, 2009 at 4:20 PM, Adam Murdoch &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26497647&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;a@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;



  

&lt;div bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;
&lt;br&gt;
&lt;br&gt;&lt;/div&gt;&lt;/div&gt;
BTW, I&amp;#39;m not suggesting you do all this work, as you really only need
the equivalent of configure(object, scriptPath). I&amp;#39;m just trying to
figure out a direction for this stuff.&lt;div class=&quot;im&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;LOL, thanks Adam.  I was worried about 2 seconds, then realized that there was no way you wanted me to do all that.  I think I like the unification of these items, they are obviously very related.  What class would have the configure(*) methods?  This would need to be available to almost everything.  Your unification thoughts almost relegate init/settings/build scripts to different flavors of a single thing.  Maybe a common base class for the delegate objects for these scripts?  Or maybe composition?  I think I prefer composition here, but there are several methods that will need to be delegated.  Maybe a &amp;quot;ConfigurableScript&amp;quot; interface to describe the method signatures, a &amp;quot;ScriptExecutor&amp;quot; class that contains the implementation (and implements the &amp;quot;ConfigurableScript&amp;quot; interface).  Then each of the appropriate classes can implement the interface and delegate those methods to the class.  Seems inelegant, but reasonable.&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;-- &lt;br&gt;John Murph&lt;br&gt;Automated Logic Research Team&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26497647.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26490998</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-23T22:22:36Z</published>
	<updated>2009-11-23T22:22:36Z</updated>
	<author>
		<name>Tomek Kaczanowski-3</name>
	</author>
	<content type="html">Hi John
&lt;br&gt;&lt;br&gt;TestNG definitely support listeners ! See
&lt;br&gt;&lt;a href=&quot;http://testng.org/doc/documentation-main.html#testng-listeners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://testng.org/doc/documentation-main.html#testng-listeners&lt;/a&gt;&lt;br&gt;&lt;br&gt;thanks
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Tomek
&lt;br&gt;&lt;br&gt;2009/11/23 John Murph &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26490998&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jmurph.alc@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Mon, Nov 23, 2009 at 12:02 AM, Tomek Kaczanowski
&lt;br&gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26490998&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kaczanowski.tomek@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hi John and all,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; First is TestListener.  This (if you can recall that far back) was the
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; reason I did the listener manager changes.  We need to have an init
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; script
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; that can register a listener that gets testing feedback from JUnit.
&lt;br&gt;&amp;gt;&amp;gt; I read &amp;quot;JUnit&amp;quot;, and immediately red light bulb started to blink in my
&lt;br&gt;&amp;gt;&amp;gt; head :) - will it also work for TestNG ?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt; Tomek
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi Tomek,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I am not very familiar with TestNG, but I would assume that it has support
&lt;br&gt;&amp;gt; for listeners.  If so, it would be reasonable to make it work for that as
&lt;br&gt;&amp;gt; well.  I will get JUnit working first, then we can see how difficult TestNG
&lt;br&gt;&amp;gt; might be (I doubt it'll be hard).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is that a good enough non-answer for you?  :)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; John Murph
&lt;br&gt;&amp;gt; Automated Logic Research Team
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26490998.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26487083</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-23T14:20:50Z</published>
	<updated>2009-11-23T14:20:50Z</updated>
	<author>
		<name>Adam Murdoch-2</name>
	</author>
	<content type="html">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;meta content=&quot;text/html;charset=ISO-8859-1&quot; http-equiv=&quot;Content-Type&quot;&gt;
&lt;/head&gt;
&lt;body bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;
&lt;br&gt;
&lt;br&gt;
Adam Murdoch wrote:
&lt;blockquote cite=&quot;mid:4B0A24C2.8070401@rubygrapefruit.net&quot; type=&quot;cite&quot;&gt;
  &lt;meta content=&quot;text/html;charset=ISO-8859-1&quot; http-equiv=&quot;Content-Type&quot;&gt;
  &lt;br&gt;
  &lt;br&gt;
John Murph wrote:
  &lt;blockquote cite=&quot;mid:efed17330911201320t20b7b00fp70ab64fbd0f962d7@mail.gmail.com&quot; type=&quot;cite&quot;&gt;On Fri, Nov 20, 2009 at 3:53 PM, Adam Murdoch &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26487083&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;a@...&lt;/a&gt;&amp;gt;&lt;/span&gt;
wrote:&lt;br&gt;
    &lt;div class=&quot;gmail_quote&quot;&gt;
    &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
      &lt;div class=&quot;im&quot;&gt;
      &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;br&gt;
        &lt;br&gt;
First is TestListener. &amp;nbsp;This (if you can recall that far back) was the
reason I did the listener manager changes. &amp;nbsp;We need to have an init
script that can register a listener that gets testing feedback from
JUnit. &amp;nbsp;This will allow us to improve our Gradle TeamCity runner so
that it gets better (and real time) test results. &amp;nbsp;I'm thinking along
the lines of &quot;if a listener of a certain type is registered with the
listener manager, then give a remoting listener to JUnit that sends
messages to an in-process peer that forwards the messages on to the
registered listener.&quot; &amp;nbsp;Do that make sense?&lt;br&gt;
      &lt;/blockquote&gt;
      &lt;br&gt;
      &lt;/div&gt;
This would be nice to have.&lt;br&gt;
      &lt;br&gt;
I suspect most of the work has been done already in the NativeTest
task, so that the events are available just below the surface of the
NativeTest task. We'd need to add some methods for adding a
TestListener to NativeTest, with an impl of that used a ListenerManager
to create its broadcaster. Then, the TestListener events would be
available in the init script.&lt;br&gt;
      &lt;br&gt;
I don't think we should bother with trying to fit this into the AntTest
task as well, and should instead focus on getting the NativeTest stuff
ready.
      &lt;div&gt;&lt;br&gt;
      &lt;/div&gt;
    &lt;/blockquote&gt;
    &lt;div&gt;&lt;br&gt;
OK, I'll have a look at the NativeTest stuff and see what I can figure
out.&amp;nbsp; This is the change that is most pressing for us as we currently
don't have a workaround, so hopefully I can figure something out.&lt;br&gt;
    &lt;/div&gt;
    &lt;/div&gt;
  &lt;/blockquote&gt;
  &lt;br&gt;
If you need something really soon, it might be better to try this with
AntTest. Will be a little while before we make NativeTest the official
test task. It's up to you. We can figure a way to merge the two
implementations if you decide to go with AntTest.&lt;br&gt;
  &lt;br&gt;
  &lt;blockquote cite=&quot;mid:efed17330911201320t20b7b00fp70ab64fbd0f962d7@mail.gmail.com&quot; type=&quot;cite&quot;&gt;
    &lt;div class=&quot;gmail_quote&quot;&gt;
    &lt;div&gt;&amp;nbsp;&lt;/div&gt;
    &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
      &lt;div&gt;&amp;nbsp; &lt;br&gt;
      &lt;/div&gt;
    &lt;/blockquote&gt;
    &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
      &lt;div class=&quot;im&quot;&gt;
      &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;br&gt;
Second is extension support. &amp;nbsp;This is the idea that a script can ask
for some external script to be executed against a given delegate
object. &amp;nbsp;Doing this through Gradle would allow for all the normal
caching stuff to be reused. &amp;nbsp;We need to be able to run such scripts
from the settings.gradle (and from inside build scripts, but that is
obvious). &amp;nbsp;We would use this feature to define our own custom domain
objects that are configured via external script files. &amp;nbsp;I'm not sure
what the interface to Gradle should be, a method on Gradle called
&quot;executeExtension&quot; that takes a file and a delegate object? &amp;nbsp;Or maybe a
&quot;getExtensionSupport&quot; method that returns an ExtensionSupport class
that provides an execute method? &amp;nbsp;What stateful information could
ExtensionSupport have that justifies a separate class? &amp;nbsp;Or maybe the
justification is that it provides more than one method, like what? &amp;nbsp;I'm
not sure what you guys might be thinking about this feature as we have
not discussed it much before.&lt;br&gt;
        &lt;br&gt;
      &lt;/blockquote&gt;
      &lt;br&gt;
      &lt;/div&gt;
Why do you need to do the configuration using external scripts? What do
they configure? I want to get a feel for the use case before we discuss
a solution.&lt;br&gt;
      &lt;br&gt;
    &lt;/blockquote&gt;
    &lt;div&gt;&amp;nbsp;&lt;/div&gt;
We showed and explained this to Hans when he was here.&amp;nbsp; It's a bit
difficult to explain in an email, but let me try.&amp;nbsp; We have the concept
of multiple modules being put together to form products, and multiple
products forming installs and multiple installs forming distributions.&amp;nbsp;
Each of these three levels (products, install, dists) have logic and
therefore need configuration of that logic.&amp;nbsp; For example, what modules
does this product need?&amp;nbsp; What is the name of the product?&amp;nbsp; What native
launchers does the product need, and what are it's settings (Xmx,
etc.)?&amp;nbsp; Similarly, installs and distributions have configurations as
well.&lt;br&gt;
    &lt;br&gt;
To support this, we have three domain objects in our buildSrc that hold
this information.&amp;nbsp; We also have various &quot;xxx_product.gradle&quot; and
&quot;xxx_install.gradle&quot; and &quot;xxx_dist.gradle&quot; files in our project that
are used depending on what is being built.&amp;nbsp; These special .gradle files
are executed on the associated domain object by our settings.gradle.&amp;nbsp;
This allows our developers to only say what's important to them, and
not have to see our giant build.gradle scripts (or our buildSrc
module).&amp;nbsp; What our developers actually think is Gradle is all these
special scripts, they never see &quot;true&quot; Gradle.&lt;br&gt;
    &lt;br&gt;
The thing is that I want these special Gradle files to be very similar
in treatment to normal Gradle files.&amp;nbsp; All I'm really doing is extending
the concepts that Gradle knows about into my own custom domain.&amp;nbsp; (This
ability is at the heart of what we love so much about Gradle.)&amp;nbsp;
Unfortunately, to do this right now I had to copy-paste some Gradle
implementation code into our buildSrc (the stuff than runs a script,
knows when/where to cache it, knows when to ignore the cache and
rebuild it, knows how to &quot;delegate&quot; to an object, etc.)&amp;nbsp; Every time you
guys touch that stuff it breaks us, because we are using internal APIs
of Gradle.&amp;nbsp; The idea of this feature is to make an easy to use public
API so that we don't get broken so much.&amp;nbsp; It will also make it easier
for others to do this same thing.&lt;br&gt;
    &lt;br&gt;
As a matter of fact, we've talked to Hans about our idea that large
projects should generally be structured this way.&amp;nbsp; I don't want to go
into details right now (I intended to write up something more complete
eventually), but most large projects have lots of concepts centered
around what they are doing and the way they work.&amp;nbsp; Formalizing those
concepts into &quot;extensions&quot; to Gradle can product a much easier to use
build engine that is designed for them.&amp;nbsp; It's why I've always agreed
that Gradle should be a toolkit.&amp;nbsp; One that works out-of-the-box for
simple projects, and one that lets large projects implement their own
custom build engine on top of it.&amp;nbsp; Part of the power of Gradle is that
it can be both.&lt;br&gt;
    &lt;/div&gt;
    &lt;br clear=&quot;all&quot;&gt;
  &lt;/blockquote&gt;
  &lt;br&gt;
Thanks for writing this up. I agree 100% with you on the goal. I think
this is an excellent pattern for large builds, where the 'build
scripts' describe what to build in some high-level build language
(custom or otherwise), and some build logic in the root
script/buildSrc/some plugin takes care of how to build those things.&lt;br&gt;
  &lt;br&gt;
I have a different suggestion for how we solve this problem. To me, it
feels like we want some unified theory of build logic composition. That
is, these all feel like the same thing:&lt;br&gt;
  &lt;br&gt;
Things we do now:&lt;br&gt;
- configure a Project using a plugin&lt;br&gt;
- configure a Project using a build script&lt;br&gt;
- configure a Gradle instance using an init script&lt;br&gt;
- configure a Settings instance using a settings script&lt;br&gt;
  &lt;br&gt;
Things we want to be able to do:&lt;br&gt;
- implement a plugin using a script&lt;br&gt;
- configure a Project using an arbitrary script&lt;br&gt;
- configure a Gradle instance using a plugin&lt;br&gt;
- configure a SourceSet/Configuration/RepositoryContainer/etc using a
plugin/extension&lt;br&gt;
- configure an arbitrary domain object using an arbitrary script&lt;br&gt;
- auto-configure a Project using scripts or plugins or java source in a
well-know location (such as buildSrc)&lt;br&gt;
- ...&lt;br&gt;
  &lt;br&gt;
So, I think we could get rid of Project.usePlugin(), and replace it
with a general method. Let's call it 'configure' for now. In any script
you would be able to do:&lt;br&gt;
  &lt;br&gt;
configure(object) { a closure }&lt;br&gt;
&amp;nbsp; - this is a generalisation of Project.configure(), available from any
script&lt;br&gt;
  &lt;br&gt;
configure(object, 'path/to/a/script.gradle')&lt;br&gt;
&amp;nbsp; - executes the given script with the given object as its delegate&lt;br&gt;
  &lt;br&gt;
configure(object, SomePluginClass)&lt;br&gt;
&amp;nbsp; - configures the given object using the given plugin, i.e. a
generalisation of Project.usePlugin()&lt;br&gt;
  &lt;br&gt;
The target object would default to the delegate of the current script,
ie in a build script the target object is a Project:&lt;br&gt;
  &lt;br&gt;
configure('path/to/a/script.gradle')&lt;br&gt;
configure(SomePluginClass) &lt;br&gt;
  &lt;br&gt;
We could also add some additional ways to locate the build logic
artifact:&lt;br&gt;
  &lt;br&gt;
configure(object, 'path/to/a/plugin.jar')&lt;br&gt;
&amp;nbsp; - locates the plugin(s) in the provided jar and applies them to the
given object&lt;br&gt;
  &lt;br&gt;
configure(object, '&lt;a moz-do-not-send=&quot;true&quot; class=&quot;moz-txt-link-freetext&quot; href=&quot;http://some.corporate.server/global-config.gradle&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://some.corporate.server/global-config.gradle&lt;/a&gt;')&lt;br&gt;
&amp;nbsp; - uses the artifact (script or jar) from the given url&lt;br&gt;
  &lt;br&gt;
configure(object, 'path/to/some/directory')&lt;br&gt;
&amp;nbsp; - treats the directory as a Gradle project which produces a plugin
jar, ie exactly the same as buildSrc&lt;br&gt;
  &lt;br&gt;
configure(object) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; dependency 'some.org:sharedConfig:1.4+'&lt;br&gt;
}&lt;br&gt;
&amp;nbsp;- uses the artifacts (scripts or jars) from the given dependency.&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
Then, our existing behaviours can be implemented in terms of configure()&lt;br&gt;
  &lt;br&gt;
- init script -&amp;gt; configure(gradle, initScriptPath)&lt;br&gt;
- settings script -&amp;gt; configure(settings, settingsScriptPath)&lt;br&gt;
- build script -&amp;gt; configure(project, buildScriptPath)&lt;br&gt;
- buildSrc -&amp;gt; configure(gradle, &quot;$rootDir/buildSrc&quot;)&lt;br&gt;
- usePlugin('name') -&amp;gt; configure(project, getClassForName('name'))&lt;br&gt;
- usePlugin(pluginClass) -&amp;gt; configure(project, pluginClass)&lt;br&gt;
  &lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
BTW, I'm not suggesting you do all this work, as you really only need
the equivalent of configure(object, scriptPath). I'm just trying to
figure out a direction for this stuff.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;pre class=&quot;moz-signature&quot; cols=&quot;72&quot;&gt;-- 
Adam Murdoch
Gradle Developer
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;
&lt;/pre&gt;
&lt;/body&gt;
&lt;/html&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26487083.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26487046</id>
	<title>Re: Re: detecting if usePlugin &quot;xyz&quot; for a project</title>
	<published>2009-11-23T14:18:25Z</published>
	<updated>2009-11-23T14:18:25Z</updated>
	<author>
		<name>Adam Murdoch-2</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;Philip Crotwell wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Just realized that the problem was that the code was running in the
&lt;br&gt;&amp;gt; plugin init instead of the task execution so the project was not be
&lt;br&gt;&amp;gt; completely set up at that point. I had the usePlugin &amp;quot;eclipse&amp;quot; before
&lt;br&gt;&amp;gt; the usePlugin &amp;quot;scala&amp;quot; in the build file, so the order was backwards.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; So, I guess it almost works. However, because the eclipse plugin seems
&lt;br&gt;&amp;gt; to do its checking at init time instead of task execution time, it can
&lt;br&gt;&amp;gt; fail to properly detect the scala plugin if usePlugin &amp;quot;eclipse&amp;quot; comes
&lt;br&gt;&amp;gt; before usePlugin &amp;quot;scala&amp;quot;.
&lt;/div&gt;&lt;br&gt;The eclipse plugins uses this kind of construct to detect whether the 
&lt;br&gt;java plugin has been applied:
&lt;br&gt;&lt;br&gt;&lt;br&gt;public void use(final Project project, ProjectPluginsContainer 
&lt;br&gt;projectPluginsHandler) {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; projectPluginsHandler.withType(JavaPlugin.class).allPlugins {... 
&lt;br&gt;some action ... }
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;&lt;br&gt;The action passed to allPlugins() is invoked when the JavaPlugin is 
&lt;br&gt;applied, whether that has already happened, or whether it happens at 
&lt;br&gt;some point in the future.
&lt;br&gt;&lt;br&gt;You should do a similar thing to detect whether the scala plugin has 
&lt;br&gt;been applied.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Adam Murdoch
&lt;br&gt;Gradle Developer
&lt;br&gt;&lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/detecting-if-usePlugin-%22xyz%22-for-a-project-tp26483883p26487046.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26487033</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-23T14:17:42Z</published>
	<updated>2009-11-23T14:17:42Z</updated>
	<author>
		<name>John Murph</name>
	</author>
	<content type="html">On Mon, Nov 23, 2009 at 12:02 AM, Tomek Kaczanowski &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26487033&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kaczanowski.tomek@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
Hi John and all,&lt;br&gt;
&lt;div class=&quot;im&quot;&gt;&lt;br&gt;
&amp;gt; First is TestListener.  This (if you can recall that far back) was the&lt;br&gt;
&amp;gt; reason I did the listener manager changes.  We need to have an init script&lt;br&gt;
&amp;gt; that can register a listener that gets testing feedback from JUnit.&lt;br&gt;
&lt;/div&gt;I read &amp;quot;JUnit&amp;quot;, and immediately red light bulb started to blink in my&lt;br&gt;
head :) - will it also work for TestNG ?&lt;br&gt;
&lt;br&gt;
--&lt;br&gt;
&lt;font color=&quot;#888888&quot;&gt;Tomek&lt;br&gt;
&lt;/font&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&lt;br clear=&quot;all&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;Hi Tomek,&lt;br&gt;
&lt;br&gt;
I am not very familiar with TestNG, but I would assume that it has support
for listeners.  If so, it would be reasonable to make it work for that
as well.  I will get JUnit working first, then we can see how difficult
TestNG might be (I doubt it&amp;#39;ll be hard).&lt;br&gt;
&lt;br&gt;
Is that a good enough non-answer for you?  :)&lt;br&gt;&lt;br&gt;&lt;br&gt;-- &lt;br&gt;John Murph&lt;br&gt;Automated Logic Research Team&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26487033.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26486984</id>
	<title>Re: eclipse classes in gradle-core and gradle-plugins</title>
	<published>2009-11-23T14:14:30Z</published>
	<updated>2009-11-23T14:14:30Z</updated>
	<author>
		<name>Adam Murdoch-2</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;Philip Crotwell wrote:
&lt;br&gt;&amp;gt; Hi
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is there a reason that EclipseProject is in gradle-core instead of
&lt;br&gt;&amp;gt; gradle-plugins?
&lt;br&gt;&lt;br&gt;We're halfway through splitting up gradle-core, and there's still some 
&lt;br&gt;stuff left in gradle-core which belongs in gradle-plugins.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp;This means that EclipseProject can't refer to
&lt;br&gt;&amp;gt; EclipsePlugin due to the compile order of the subprojects.
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;Generally, our tasks don't refer to the plugins. The dependency usually 
&lt;br&gt;goes the other way. So, it shouldn't matter that EclipseProject is in 
&lt;br&gt;gradle-core.
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Adam Murdoch
&lt;br&gt;Gradle Developer
&lt;br&gt;&lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/eclipse-classes-in-gradle-core-and-gradle-plugins-tp26486581p26486984.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26486581</id>
	<title>eclipse classes in gradle-core and gradle-plugins</title>
	<published>2009-11-23T13:49:47Z</published>
	<updated>2009-11-23T13:49:47Z</updated>
	<author>
		<name>Philip Crotwell</name>
	</author>
	<content type="html">Hi
&lt;br&gt;&lt;br&gt;Is there a reason that EclipseProject is in gradle-core instead of
&lt;br&gt;gradle-plugins? This means that EclipseProject can't refer to
&lt;br&gt;EclipsePlugin due to the compile order of the subprojects.
&lt;br&gt;EclipseProject is, as far as I can tell, only used in EclipsePlugin,
&lt;br&gt;so it would seem like it would be better in the plugin than core, or
&lt;br&gt;is there a larger plan to make ide integration that would require
&lt;br&gt;being in core? This relates to my trying to get the eclipse plugin to
&lt;br&gt;correctly generate eclipse .project files for scala.
&lt;br&gt;&lt;br&gt;thanks,
&lt;br&gt;Philip
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/eclipse-classes-in-gradle-core-and-gradle-plugins-tp26486581p26486581.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26486320</id>
	<title>Re: detecting if usePlugin &quot;xyz&quot; for a project</title>
	<published>2009-11-23T13:34:57Z</published>
	<updated>2009-11-23T13:34:57Z</updated>
	<author>
		<name>Philip Crotwell</name>
	</author>
	<content type="html">Hi
&lt;br&gt;&lt;br&gt;Just realized that the problem was that the code was running in the
&lt;br&gt;plugin init instead of the task execution so the project was not be
&lt;br&gt;completely set up at that point. I had the usePlugin &amp;quot;eclipse&amp;quot; before
&lt;br&gt;the usePlugin &amp;quot;scala&amp;quot; in the build file, so the order was backwards.
&lt;br&gt;&lt;br&gt;So, I guess it almost works. However, because the eclipse plugin seems
&lt;br&gt;to do its checking at init time instead of task execution time, it can
&lt;br&gt;fail to properly detect the scala plugin if usePlugin &amp;quot;eclipse&amp;quot; comes
&lt;br&gt;before usePlugin &amp;quot;scala&amp;quot;. Presumably the scala plugin detection needs
&lt;br&gt;to move from the initialization to the task execution, I suppose
&lt;br&gt;effectively moving the setProjectType from configureEclipseProject()
&lt;br&gt;in EclipsePlugin to generateProject in EclipseProject?
&lt;br&gt;&lt;br&gt;thanks
&lt;br&gt;Philip
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On Mon, Nov 23, 2009 at 1:56 PM, Philip Crotwell &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26486320&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;crotwell@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is there a way to tell if a project uses a plugin?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I tried
&lt;br&gt;&amp;gt; project.getPlugins().hasPlugin(ScalaPlugin.class)
&lt;br&gt;&amp;gt; but get always get false regardless. It is false even if I am inside
&lt;br&gt;&amp;gt; the executing ecplise plugin and do a hasPlugin(EclipsePlugin.class).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Perhaps a related question, why is the plugin container passed as an
&lt;br&gt;&amp;gt; arg to Plugin.use() if it is accessuble via Project.getPlugins()? The
&lt;br&gt;&amp;gt; second argument seems redundant, unless the Project.getPlugins() is
&lt;br&gt;&amp;gt; not functional.
&lt;br&gt;&amp;gt; void use(Project project,
&lt;br&gt;&amp;gt;         ProjectPluginsContainer projectPluginsHandler)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; My goal is to modify the EclipsePlugin in order to add the &amp;quot;scala
&lt;br&gt;&amp;gt; nature&amp;quot; to eclipse projects if usePlugin &amp;quot;scala&amp;quot; is in the build file.
&lt;br&gt;&amp;gt; Attached is a patch that shows what I have tried (along with some
&lt;br&gt;&amp;gt; printlns), but this doesn't work as the hasPlugin returns false.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have created a issue for this and will upload my patch if/when I
&lt;br&gt;&amp;gt; figure out the hasPlugin issue.
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://jira.codehaus.org/browse/GRADLE-751&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://jira.codehaus.org/browse/GRADLE-751&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Gradle 0.9-20091123133702-0500
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; thanks,
&lt;br&gt;&amp;gt; Philip
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/detecting-if-usePlugin-%22xyz%22-for-a-project-tp26483883p26486320.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26483883</id>
	<title>detecting if usePlugin &quot;xyz&quot; for a project</title>
	<published>2009-11-23T10:56:25Z</published>
	<updated>2009-11-23T10:56:25Z</updated>
	<author>
		<name>Philip Crotwell</name>
	</author>
	<content type="html">Hi
&lt;br&gt;&lt;br&gt;Is there a way to tell if a project uses a plugin?
&lt;br&gt;&lt;br&gt;I tried
&lt;br&gt;project.getPlugins().hasPlugin(ScalaPlugin.class)
&lt;br&gt;but get always get false regardless. It is false even if I am inside
&lt;br&gt;the executing ecplise plugin and do a hasPlugin(EclipsePlugin.class).
&lt;br&gt;&lt;br&gt;Perhaps a related question, why is the plugin container passed as an
&lt;br&gt;arg to Plugin.use() if it is accessuble via Project.getPlugins()? The
&lt;br&gt;second argument seems redundant, unless the Project.getPlugins() is
&lt;br&gt;not functional.
&lt;br&gt;void use(Project project,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ProjectPluginsContainer projectPluginsHandler)
&lt;br&gt;&lt;br&gt;My goal is to modify the EclipsePlugin in order to add the &amp;quot;scala
&lt;br&gt;nature&amp;quot; to eclipse projects if usePlugin &amp;quot;scala&amp;quot; is in the build file.
&lt;br&gt;Attached is a patch that shows what I have tried (along with some
&lt;br&gt;printlns), but this doesn't work as the hasPlugin returns false.
&lt;br&gt;&lt;br&gt;I have created a issue for this and will upload my patch if/when I
&lt;br&gt;figure out the hasPlugin issue.
&lt;br&gt;&lt;a href=&quot;http://jira.codehaus.org/browse/GRADLE-751&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://jira.codehaus.org/browse/GRADLE-751&lt;/a&gt;&lt;br&gt;&lt;br&gt;Gradle 0.9-20091123133702-0500
&lt;br&gt;&lt;br&gt;thanks,
&lt;br&gt;Philip
&lt;br&gt;&lt;br /&gt; &lt;br /&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;scala-eclipse.patch&lt;/strong&gt; (3K) &lt;a href=&quot;http://old.nabble.com/attachment/26483883/0/scala-eclipse.patch&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/detecting-if-usePlugin-%22xyz%22-for-a-project-tp26483883p26483883.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26481567</id>
	<title>Re: Gradle Repository</title>
	<published>2009-11-23T08:38:44Z</published>
	<updated>2009-11-23T08:38:44Z</updated>
	<author>
		<name>LightGuard</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;On Sun, Nov 22, 2009 at 19:15, Hans Dockter &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26481567&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mail@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; at the moment the Gradle build has only first level dependencies. We introduced this a while ago because there were some issues with multi-project builds and module dependencies. As module-dependencies have still issues with being published and having flat dependencies being pretty inconvenient, I'd like to switch to a standard repository based approach for dealing with transitive dependencies.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Artifactory is offering free hosting for open source projects. So we would have a nice repository manage for managing our module descriptors.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thoughts?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; - Hans
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Hans Dockter
&lt;br&gt;&amp;gt; Gradle Project Manager
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe from this list, please visit:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;    &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;/div&gt;I've used artifactory in the past, it's a pretty decent repo manager. &amp;nbsp;Nexus looks really nice, but I'm not sure what Sonatype does for hosting (or how close you'd want to get to them ;) )
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Jason Porter
&lt;br&gt;Real Programmers think better when playing Adventure or Rogue.
&lt;br&gt;&lt;br&gt;PGP key id: 926CCFF5
&lt;br&gt;PGP fingerprint: 64C2 C078 13A9 5B23 7738 F7E5 1046 C39B 926C CFF5
&lt;br&gt;PGP key available at: keyserver.net, pgp.mit.edu
&lt;br&gt;&lt;br&gt;&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (285 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26481567/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gradle-Repository-tp26471847p26481567.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26473222</id>
	<title>Re: Some archive stuff</title>
	<published>2009-11-22T22:08:49Z</published>
	<updated>2009-11-22T22:08:49Z</updated>
	<author>
		<name>Adam Murdoch-2</name>
	</author>
	<content type="html">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;meta content=&quot;text/html;charset=ISO-8859-1&quot; http-equiv=&quot;Content-Type&quot;&gt;
&lt;/head&gt;
&lt;body bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;
&lt;br&gt;
&lt;br&gt;
Hans Dockter wrote:
&lt;blockquote cite=&quot;mid:035B19E4-2E9F-48A3-AD81-D91FE7FA8D81@dockter.biz&quot; type=&quot;cite&quot;&gt;
  &lt;pre wrap=&quot;&quot;&gt;There are some issues left with our very nice new archive handling.

usePlugin('base')

task topLevelInclude(type: Zip) {
   baseName = &quot;topLevelInclude&quot;
   include &quot;foo&quot;
}

task inheritInto(type: Zip) {
   baseName = &quot;inheritInfo&quot;
   into &quot;bar&quot;
   from('foo')
}

- The topLevelInclude zip is empty. I would expect it to include foo.
  &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br&gt;
Does that mean that the following should create a Zip containing the
entire project directory?&lt;br&gt;
&lt;br&gt;
task someZip(type: Zip) {&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
Perhaps instead it should be an error to use include or exclude when no
source has been specified.&lt;br&gt;
&lt;br&gt;
&lt;blockquote cite=&quot;mid:035B19E4-2E9F-48A3-AD81-D91FE7FA8D81@dockter.biz&quot; type=&quot;cite&quot;&gt;
  &lt;pre wrap=&quot;&quot;&gt;- The inheritInto zip has foo as a first level file. I would expect it to be in bar/foo.

  &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br&gt;
I'll fix that.&lt;br&gt;
&lt;br&gt;
&lt;blockquote cite=&quot;mid:035B19E4-2E9F-48A3-AD81-D91FE7FA8D81@dockter.biz&quot; type=&quot;cite&quot;&gt;
  &lt;pre wrap=&quot;&quot;&gt;I have attached a zip with the test project.

- Hans

--
Hans Dockter
Gradle Project Manager
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;





  &lt;/pre&gt;
  &lt;pre wrap=&quot;&quot;&gt;
&lt;hr size=&quot;4&quot; width=&quot;90%&quot;&gt;
---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;
  &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;pre class=&quot;moz-signature&quot; cols=&quot;72&quot;&gt;-- 
Adam Murdoch
Gradle Developer
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;
&lt;/pre&gt;
&lt;/body&gt;
&lt;/html&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Some-archive-stuff-tp26377935p26473222.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26473190</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-22T22:02:27Z</published>
	<updated>2009-11-22T22:02:27Z</updated>
	<author>
		<name>Tomek Kaczanowski-3</name>
	</author>
	<content type="html">Hi John and all,
&lt;br&gt;&lt;br&gt;&amp;gt; First is TestListener.  This (if you can recall that far back) was the
&lt;br&gt;&amp;gt; reason I did the listener manager changes.  We need to have an init script
&lt;br&gt;&amp;gt; that can register a listener that gets testing feedback from JUnit.
&lt;br&gt;I read &amp;quot;JUnit&amp;quot;, and immediately red light bulb started to blink in my
&lt;br&gt;head :) - will it also work for TestNG ?
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Tomek
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26473190.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26473174</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-22T21:59:30Z</published>
	<updated>2009-11-22T21:59:30Z</updated>
	<author>
		<name>Adam Murdoch-2</name>
	</author>
	<content type="html">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;meta content=&quot;text/html;charset=ISO-8859-1&quot; http-equiv=&quot;Content-Type&quot;&gt;
&lt;/head&gt;
&lt;body bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;
&lt;br&gt;
&lt;br&gt;
John Murph wrote:
&lt;blockquote cite=&quot;mid:efed17330911201320t20b7b00fp70ab64fbd0f962d7@mail.gmail.com&quot; type=&quot;cite&quot;&gt;On Fri, Nov 20, 2009 at 3:53 PM, Adam Murdoch &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26473174&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;a@...&lt;/a&gt;&amp;gt;&lt;/span&gt;
wrote:&lt;br&gt;
  &lt;div class=&quot;gmail_quote&quot;&gt;
  &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
    &lt;div class=&quot;im&quot;&gt;
    &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;br&gt;
      &lt;br&gt;
First is TestListener. &amp;nbsp;This (if you can recall that far back) was the
reason I did the listener manager changes. &amp;nbsp;We need to have an init
script that can register a listener that gets testing feedback from
JUnit. &amp;nbsp;This will allow us to improve our Gradle TeamCity runner so
that it gets better (and real time) test results. &amp;nbsp;I'm thinking along
the lines of &quot;if a listener of a certain type is registered with the
listener manager, then give a remoting listener to JUnit that sends
messages to an in-process peer that forwards the messages on to the
registered listener.&quot; &amp;nbsp;Do that make sense?&lt;br&gt;
    &lt;/blockquote&gt;
    &lt;br&gt;
    &lt;/div&gt;
This would be nice to have.&lt;br&gt;
    &lt;br&gt;
I suspect most of the work has been done already in the NativeTest
task, so that the events are available just below the surface of the
NativeTest task. We'd need to add some methods for adding a
TestListener to NativeTest, with an impl of that used a ListenerManager
to create its broadcaster. Then, the TestListener events would be
available in the init script.&lt;br&gt;
    &lt;br&gt;
I don't think we should bother with trying to fit this into the AntTest
task as well, and should instead focus on getting the NativeTest stuff
ready.
    &lt;div&gt;&lt;br&gt;
    &lt;/div&gt;
  &lt;/blockquote&gt;
  &lt;div&gt;&lt;br&gt;
OK, I'll have a look at the NativeTest stuff and see what I can figure
out.&amp;nbsp; This is the change that is most pressing for us as we currently
don't have a workaround, so hopefully I can figure something out.&lt;br&gt;
  &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
If you need something really soon, it might be better to try this with
AntTest. Will be a little while before we make NativeTest the official
test task. It's up to you. We can figure a way to merge the two
implementations if you decide to go with AntTest.&lt;br&gt;
&lt;br&gt;
&lt;blockquote cite=&quot;mid:efed17330911201320t20b7b00fp70ab64fbd0f962d7@mail.gmail.com&quot; type=&quot;cite&quot;&gt;
  &lt;div class=&quot;gmail_quote&quot;&gt;
  &lt;div&gt;&amp;nbsp;&lt;/div&gt;
  &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
    &lt;div&gt;&amp;nbsp;
    &lt;br&gt;
    &lt;/div&gt;
  &lt;/blockquote&gt;
  &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
    &lt;div class=&quot;im&quot;&gt;
    &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;br&gt;
Second is extension support. &amp;nbsp;This is the idea that a script can ask
for some external script to be executed against a given delegate
object. &amp;nbsp;Doing this through Gradle would allow for all the normal
caching stuff to be reused. &amp;nbsp;We need to be able to run such scripts
from the settings.gradle (and from inside build scripts, but that is
obvious). &amp;nbsp;We would use this feature to define our own custom domain
objects that are configured via external script files. &amp;nbsp;I'm not sure
what the interface to Gradle should be, a method on Gradle called
&quot;executeExtension&quot; that takes a file and a delegate object? &amp;nbsp;Or maybe a
&quot;getExtensionSupport&quot; method that returns an ExtensionSupport class
that provides an execute method? &amp;nbsp;What stateful information could
ExtensionSupport have that justifies a separate class? &amp;nbsp;Or maybe the
justification is that it provides more than one method, like what? &amp;nbsp;I'm
not sure what you guys might be thinking about this feature as we have
not discussed it much before.&lt;br&gt;
      &lt;br&gt;
    &lt;/blockquote&gt;
    &lt;br&gt;
    &lt;/div&gt;
Why do you need to do the configuration using external scripts? What do
they configure? I want to get a feel for the use case before we discuss
a solution.&lt;br&gt;
    &lt;br&gt;
  &lt;/blockquote&gt;
  &lt;div&gt;&amp;nbsp;&lt;/div&gt;
We showed and explained this to Hans when he was here.&amp;nbsp; It's a bit
difficult to explain in an email, but let me try.&amp;nbsp; We have the concept
of multiple modules being put together to form products, and multiple
products forming installs and multiple installs forming distributions.&amp;nbsp;
Each of these three levels (products, install, dists) have logic and
therefore need configuration of that logic.&amp;nbsp; For example, what modules
does this product need?&amp;nbsp; What is the name of the product?&amp;nbsp; What native
launchers does the product need, and what are it's settings (Xmx,
etc.)?&amp;nbsp; Similarly, installs and distributions have configurations as
well.&lt;br&gt;
  &lt;br&gt;
To support this, we have three domain objects in our buildSrc that hold
this information.&amp;nbsp; We also have various &quot;xxx_product.gradle&quot; and
&quot;xxx_install.gradle&quot; and &quot;xxx_dist.gradle&quot; files in our project that
are used depending on what is being built.&amp;nbsp; These special .gradle files
are executed on the associated domain object by our settings.gradle.&amp;nbsp;
This allows our developers to only say what's important to them, and
not have to see our giant build.gradle scripts (or our buildSrc
module).&amp;nbsp; What our developers actually think is Gradle is all these
special scripts, they never see &quot;true&quot; Gradle.&lt;br&gt;
  &lt;br&gt;
The thing is that I want these special Gradle files to be very similar
in treatment to normal Gradle files.&amp;nbsp; All I'm really doing is extending
the concepts that Gradle knows about into my own custom domain.&amp;nbsp; (This
ability is at the heart of what we love so much about Gradle.)&amp;nbsp;
Unfortunately, to do this right now I had to copy-paste some Gradle
implementation code into our buildSrc (the stuff than runs a script,
knows when/where to cache it, knows when to ignore the cache and
rebuild it, knows how to &quot;delegate&quot; to an object, etc.)&amp;nbsp; Every time you
guys touch that stuff it breaks us, because we are using internal APIs
of Gradle.&amp;nbsp; The idea of this feature is to make an easy to use public
API so that we don't get broken so much.&amp;nbsp; It will also make it easier
for others to do this same thing.&lt;br&gt;
  &lt;br&gt;
As a matter of fact, we've talked to Hans about our idea that large
projects should generally be structured this way.&amp;nbsp; I don't want to go
into details right now (I intended to write up something more complete
eventually), but most large projects have lots of concepts centered
around what they are doing and the way they work.&amp;nbsp; Formalizing those
concepts into &quot;extensions&quot; to Gradle can product a much easier to use
build engine that is designed for them.&amp;nbsp; It's why I've always agreed
that Gradle should be a toolkit.&amp;nbsp; One that works out-of-the-box for
simple projects, and one that lets large projects implement their own
custom build engine on top of it.&amp;nbsp; Part of the power of Gradle is that
it can be both.&lt;br&gt;
  &lt;/div&gt;
  &lt;br clear=&quot;all&quot;&gt;
&lt;/blockquote&gt;
&lt;br&gt;
Thanks for writing this up. I agree 100% with you on the goal. I think
this is an excellent pattern for large builds, where the 'build
scripts' describe what to build in some high-level build language
(custom or otherwise), and some build logic in the root
script/buildSrc/some plugin takes care of how to build those things.&lt;br&gt;
&lt;br&gt;
I have a different suggestion for how we solve this problem. To me, it
feels like we want some unified theory of build logic composition. That
is, these all feel like the same thing:&lt;br&gt;
&lt;br&gt;
Things we do now:&lt;br&gt;
- configure a Project using a plugin&lt;br&gt;
- configure a Project using a build script&lt;br&gt;
- configure a Gradle instance using an init script&lt;br&gt;
- configure a Settings instance using a settings script&lt;br&gt;
&lt;br&gt;
Things we want to be able to do:&lt;br&gt;
- implement a plugin using a script&lt;br&gt;
- configure a Project using an arbitrary script&lt;br&gt;
- configure a Gradle instance using a plugin&lt;br&gt;
- configure a SourceSet/Configuration/RepositoryContainer/etc using a
plugin/extension&lt;br&gt;
- configure an arbitrary domain object using an arbitrary script&lt;br&gt;
- auto-configure a Project using scripts or plugins or java source in a
well-know location (such as buildSrc)&lt;br&gt;
- ...&lt;br&gt;
&lt;br&gt;
So, I think we could get rid of Project.usePlugin(), and replace it
with a general method. Let's call it 'configure' for now. In any script
you would be able to do:&lt;br&gt;
&lt;br&gt;
configure(object) { a closure }&lt;br&gt;
&amp;nbsp; - this is a generalisation of Project.configure(), available from any
script&lt;br&gt;
&lt;br&gt;
configure(object, 'path/to/a/script.gradle')&lt;br&gt;
&amp;nbsp; - executes the given script with the given object as its delegate&lt;br&gt;
&lt;br&gt;
configure(object, SomePluginClass)&lt;br&gt;
&amp;nbsp; - configures the given object using the given plugin, i.e. a
generalisation of Project.usePlugin()&lt;br&gt;
&lt;br&gt;
The target object would default to the delegate of the current script,
ie in a build script the target object is a Project:&lt;br&gt;
&lt;br&gt;
configure('path/to/a/script.gradle')&lt;br&gt;
configure(SomePluginClass) &lt;br&gt;
&lt;br&gt;
We could also add some additional ways to locate the build logic
artifact:&lt;br&gt;
&lt;br&gt;
configure(object, 'path/to/a/plugin.jar')&lt;br&gt;
&amp;nbsp; - locates the plugin(s) in the provided jar and applies them to the
given object&lt;br&gt;
&lt;br&gt;
configure(object, '&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://some.corporate.server/global-config.gradle&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://some.corporate.server/global-config.gradle&lt;/a&gt;')&lt;br&gt;
&amp;nbsp; - uses the artifact (script or jar) from the given url&lt;br&gt;
&lt;br&gt;
configure(object, 'path/to/some/directory')&lt;br&gt;
&amp;nbsp; - treats the directory as a Gradle project which produces a plugin
jar, ie exactly the same as buildSrc&lt;br&gt;
&lt;br&gt;
configure(object) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; dependency 'some.org:sharedConfig:1.4+'&lt;br&gt;
}&lt;br&gt;
&amp;nbsp;- uses the artifacts (scripts or jars) from the given dependency.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Then, our existing behaviours can be implemented in terms of configure()&lt;br&gt;
&lt;br&gt;
- init script -&amp;gt; configure(gradle, initScriptPath)&lt;br&gt;
- settings script -&amp;gt; configure(settings, settingsScriptPath)&lt;br&gt;
- build script -&amp;gt; configure(project, buildScriptPath)&lt;br&gt;
- buildSrc -&amp;gt; configure(gradle, &quot;$rootDir/buildSrc&quot;)&lt;br&gt;
- usePlugin('name') -&amp;gt; configure(project, getClassForName('name'))&lt;br&gt;
- usePlugin(pluginClass) -&amp;gt; configure(project, pluginClass)&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;pre class=&quot;moz-signature&quot; cols=&quot;72&quot;&gt;-- 
Adam Murdoch
Gradle Developer
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;
&lt;/pre&gt;
&lt;/body&gt;
&lt;/html&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26473174.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26471847</id>
	<title>Gradle Repository</title>
	<published>2009-11-22T18:15:30Z</published>
	<updated>2009-11-22T18:15:30Z</updated>
	<author>
		<name>hdockter</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;at the moment the Gradle build has only first level dependencies. We introduced this a while ago because there were some issues with multi-project builds and module dependencies. As module-dependencies have still issues with being published and having flat dependencies being pretty inconvenient, I'd like to switch to a standard repository based approach for dealing with transitive dependencies.
&lt;br&gt;&lt;br&gt;Artifactory is offering free hosting for open source projects. So we would have a nice repository manage for managing our module descriptors. 
&lt;br&gt;&lt;br&gt;Thoughts?
&lt;br&gt;&lt;br&gt;- Hans
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Hans Dockter
&lt;br&gt;Gradle Project Manager
&lt;br&gt;&lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gradle-Repository-tp26471847p26471847.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26470744</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-22T15:28:29Z</published>
	<updated>2009-11-22T15:28:29Z</updated>
	<author>
		<name>John Murph</name>
	</author>
	<content type="html">On Sun, Nov 22, 2009 at 7:24 AM, Tom Eyckmans &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26470744&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;teyckmans@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;&lt;div&gt;I&amp;#39;m currently working in this area (reporting / listeners) of the native test stuff, I have added a basic to console report based on the events the test execution provides. The next step would be to have the reports as a realy listener and add the listener infrastructure. One thing we need to keep in mind is that the execution is really parallel and the CI listeners are probably expecting serial invocation, so we have to foresee this. If you&amp;#39;d like we can have a skype-session about this.&lt;br&gt;

&lt;/div&gt;&lt;div class=&quot;im&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;div&gt;
&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;I&amp;#39;m gonna have to get my head around what I want/need before I could talk about it with any clarity.  I might be able to talk next week  (23 through 27) while on vacation, or I might have to wait until the following week.  I&amp;#39;ll ping you when/if I&amp;#39;m ready to talk about it.  Thanks for the offer!&lt;br&gt;
&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;-- &lt;br&gt;John Murph&lt;br&gt;Automated Logic Research Team&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26470744.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26470420</id>
	<title>exec handle - shutdown hook action stuff</title>
	<published>2009-11-22T14:47:32Z</published>
	<updated>2009-11-22T14:47:32Z</updated>
	<author>
		<name>Tom Eyckmans</name>
	</author>
	<content type="html">Hi all,&lt;br&gt;&lt;br&gt;Just wanted to let you all know that I&amp;#39;ve added a general purpose shutdown hook.&lt;br&gt;&lt;br&gt;You can add/remove actions that need to be performed when the Gradle processes is canceled by using the org.gradle.util.shutdown.ShutdownHookActionRegister class.&lt;br&gt;
&lt;br&gt;Currently only the DefaultExecHandle class uses this, when you call start on an exec handle now a shutdown hook action is registered to cancel the external process when the Gradle process is canceled. When the external process fails or finishes the shutdown hook action is removed from the register.&lt;br&gt;
&lt;br&gt;This way we clean up nicely when we start external processes by using the exec handle classes.&lt;br&gt;&lt;br&gt;Kr,&lt;br&gt;&lt;br&gt;Tom&lt;br&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/exec-handle---shutdown-hook-action-stuff-tp26470420p26470420.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26464873</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-22T04:24:33Z</published>
	<updated>2009-11-22T04:24:33Z</updated>
	<author>
		<name>Tom Eyckmans</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/11/20 Adam Murdoch &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26464873&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;a@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div class=&quot;im&quot;&gt;&lt;br&gt;
&lt;br&gt;
John Murph wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
Hans and Adam (and anyone else who might care),&lt;br&gt;
&lt;br&gt;
I&amp;#39;m about to start hacking at Gradle again.&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;&lt;/div&gt;
Excellent.&lt;div class=&quot;im&quot;&gt;&lt;br&gt;
&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
  I&amp;#39;ve got two tasks on my list.  I wanted to let both of you know that I&amp;#39;m working on these and see if you had any ideas or concerns before I get to far into it.  I hope to work on these next week while I&amp;#39;m on Thanksgiving vacation (I have no idea how much I&amp;#39;ll actually get done...).&lt;br&gt;

&lt;br&gt;
First is TestListener.  This (if you can recall that far back) was the reason I did the listener manager changes.  We need to have an init script that can register a listener that gets testing feedback from JUnit.  This will allow us to improve our Gradle TeamCity runner so that it gets better (and real time) test results.  I&amp;#39;m thinking along the lines of &amp;quot;if a listener of a certain type is registered with the listener manager, then give a remoting listener to JUnit that sends messages to an in-process peer that forwards the messages on to the registered listener.&amp;quot;  Do that make sense?&lt;br&gt;

&lt;/blockquote&gt;
&lt;br&gt;&lt;/div&gt;
This would be nice to have.&lt;br&gt;
&lt;br&gt;
I suspect most of the work has been done already in the NativeTest task, so that the events are available just below the surface of the NativeTest task. We&amp;#39;d need to add some methods for adding a TestListener to NativeTest, with an impl of that used a ListenerManager to create its broadcaster. Then, the TestListener events would be available in the init script.&lt;br&gt;

&lt;br&gt;
I don&amp;#39;t think we should bother with trying to fit this into the AntTest task as well, and should instead focus on getting the NativeTest stuff ready.&lt;div class=&quot;im&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;I&amp;#39;m currently working in this area (reporting / listeners) of the native test stuff, I have added a basic to console report based on the events the test execution provides. The next step would be to have the reports as a realy listener and add the listener infrastructure. One thing we need to keep in mind is that the execution is really parallel and the CI listeners are probably expecting serial invocation, so we have to foresee this. If you&amp;#39;d like we can have a skype-session about this.&lt;br&gt;
&lt;/div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;div class=&quot;im&quot;&gt;
&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;br&gt;
Second is extension support.  This is the idea that a script can ask for some external script to be executed against a given delegate object.  Doing this through Gradle would allow for all the normal caching stuff to be reused.  We need to be able to run such scripts from the settings.gradle (and from inside build scripts, but that is obvious).  We would use this feature to define our own custom domain objects that are configured via external script files.  I&amp;#39;m not sure what the interface to Gradle should be, a method on Gradle called &amp;quot;executeExtension&amp;quot; that takes a file and a delegate object?  Or maybe a &amp;quot;getExtensionSupport&amp;quot; method that returns an ExtensionSupport class that provides an execute method?  What stateful information could ExtensionSupport have that justifies a separate class?  Or maybe the justification is that it provides more than one method, like what?  I&amp;#39;m not sure what you guys might be thinking about this feature as we have not discussed it much before.&lt;br&gt;

&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;&lt;/div&gt;
Why do you need to do the configuration using external scripts? What do they configure? I want to get a feel for the use case before we discuss a solution.&lt;br&gt;
&lt;br&gt;
-- &lt;br&gt;
Adam Murdoch&lt;br&gt;
Gradle Developer&lt;br&gt;
&lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
---------------------------------------------------------------------&lt;br&gt;
To unsubscribe from this list, please visit:&lt;br&gt;
&lt;br&gt;
   &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26464873.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26450453</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-20T13:20:43Z</published>
	<updated>2009-11-20T13:20:43Z</updated>
	<author>
		<name>John Murph</name>
	</author>
	<content type="html">On Fri, Nov 20, 2009 at 3:53 PM, Adam Murdoch &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26450453&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;a@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div class=&quot;im&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;br&gt;
&lt;br&gt;
First is TestListener.  This (if you can recall that far back) was the reason I did the listener manager changes.  We need to have an init script that can register a listener that gets testing feedback from JUnit.  This will allow us to improve our Gradle TeamCity runner so that it gets better (and real time) test results.  I&amp;#39;m thinking along the lines of &amp;quot;if a listener of a certain type is registered with the listener manager, then give a remoting listener to JUnit that sends messages to an in-process peer that forwards the messages on to the registered listener.&amp;quot;  Do that make sense?&lt;br&gt;

&lt;/blockquote&gt;
&lt;br&gt;&lt;/div&gt;
This would be nice to have.&lt;br&gt;
&lt;br&gt;
I suspect most of the work has been done already in the NativeTest task, so that the events are available just below the surface of the NativeTest task. We&amp;#39;d need to add some methods for adding a TestListener to NativeTest, with an impl of that used a ListenerManager to create its broadcaster. Then, the TestListener events would be available in the init script.&lt;br&gt;

&lt;br&gt;
I don&amp;#39;t think we should bother with trying to fit this into the AntTest task as well, and should instead focus on getting the NativeTest stuff ready.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;OK, I&amp;#39;ll have a look at the NativeTest stuff and see what I can figure out.  This is the change that is most pressing for us as we currently don&amp;#39;t have a workaround, so hopefully I can figure something out.&lt;br&gt;
 &lt;/div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;div&gt; 
&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;div class=&quot;im&quot;&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;br&gt;
Second is extension support.  This is the idea that a script can ask for some external script to be executed against a given delegate object.  Doing this through Gradle would allow for all the normal caching stuff to be reused.  We need to be able to run such scripts from the settings.gradle (and from inside build scripts, but that is obvious).  We would use this feature to define our own custom domain objects that are configured via external script files.  I&amp;#39;m not sure what the interface to Gradle should be, a method on Gradle called &amp;quot;executeExtension&amp;quot; that takes a file and a delegate object?  Or maybe a &amp;quot;getExtensionSupport&amp;quot; method that returns an ExtensionSupport class that provides an execute method?  What stateful information could ExtensionSupport have that justifies a separate class?  Or maybe the justification is that it provides more than one method, like what?  I&amp;#39;m not sure what you guys might be thinking about this feature as we have not discussed it much before.&lt;br&gt;

&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;&lt;/div&gt;
Why do you need to do the configuration using external scripts? What do they configure? I want to get a feel for the use case before we discuss a solution.&lt;br&gt;
&lt;br&gt;&lt;/blockquote&gt;&lt;div&gt; &lt;/div&gt;We showed and explained this to Hans when he was here.  It&amp;#39;s a bit difficult to explain in an email, but let me try.  We have the concept of multiple modules being put together to form products, and multiple products forming installs and multiple installs forming distributions.  Each of these three levels (products, install, dists) have logic and therefore need configuration of that logic.  For example, what modules does this product need?  What is the name of the product?  What native launchers does the product need, and what are it&amp;#39;s settings (Xmx, etc.)?  Similarly, installs and distributions have configurations as well.&lt;br&gt;
&lt;br&gt;To support this, we have three domain objects in our buildSrc that hold this information.  We also have various &amp;quot;xxx_product.gradle&amp;quot; and &amp;quot;xxx_install.gradle&amp;quot; and &amp;quot;xxx_dist.gradle&amp;quot; files in our project that are used depending on what is being built.  These special .gradle files are executed on the associated domain object by our settings.gradle.  This allows our developers to only say what&amp;#39;s important to them, and not have to see our giant build.gradle scripts (or our buildSrc module).  What our developers actually think is Gradle is all these special scripts, they never see &amp;quot;true&amp;quot; Gradle.&lt;br&gt;
&lt;br&gt;The thing is that I want these special Gradle files to be very similar in treatment to normal Gradle files.  All I&amp;#39;m really doing is extending the concepts that Gradle knows about into my own custom domain.  (This ability is at the heart of what we love so much about Gradle.)  Unfortunately, to do this right now I had to copy-paste some Gradle implementation code into our buildSrc (the stuff than runs a script, knows when/where to cache it, knows when to ignore the cache and rebuild it, knows how to &amp;quot;delegate&amp;quot; to an object, etc.)  Every time you guys touch that stuff it breaks us, because we are using internal APIs of Gradle.  The idea of this feature is to make an easy to use public API so that we don&amp;#39;t get broken so much.  It will also make it easier for others to do this same thing.&lt;br&gt;
&lt;br&gt;As a matter of fact, we&amp;#39;ve talked to Hans about our idea that large projects should generally be structured this way.  I don&amp;#39;t want to go into details right now (I intended to write up something more complete eventually), but most large projects have lots of concepts centered around what they are doing and the way they work.  Formalizing those concepts into &amp;quot;extensions&amp;quot; to Gradle can product a much easier to use build engine that is designed for them.  It&amp;#39;s why I&amp;#39;ve always agreed that Gradle should be a toolkit.  One that works out-of-the-box for simple projects, and one that lets large projects implement their own custom build engine on top of it.  Part of the power of Gradle is that it can be both.&lt;br&gt;
&lt;/div&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;John Murph&lt;br&gt;Automated Logic Research Team&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26450453.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26450099</id>
	<title>Re: Adding two new features to Gradle</title>
	<published>2009-11-20T12:53:09Z</published>
	<updated>2009-11-20T12:53:09Z</updated>
	<author>
		<name>Adam Murdoch-2</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;John Murph wrote:
&lt;br&gt;&amp;gt; Hans and Adam (and anyone else who might care),
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'm about to start hacking at Gradle again.
&lt;br&gt;&lt;br&gt;Excellent.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp; I've got two tasks on my list. &amp;nbsp;I wanted to let both of you know 
&lt;br&gt;&amp;gt; that I'm working on these and see if you had any ideas or concerns 
&lt;br&gt;&amp;gt; before I get to far into it. &amp;nbsp;I hope to work on these next week while 
&lt;br&gt;&amp;gt; I'm on Thanksgiving vacation (I have no idea how much I'll actually 
&lt;br&gt;&amp;gt; get done...).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; First is TestListener. &amp;nbsp;This (if you can recall that far back) was the 
&lt;br&gt;&amp;gt; reason I did the listener manager changes. &amp;nbsp;We need to have an init 
&lt;br&gt;&amp;gt; script that can register a listener that gets testing feedback from 
&lt;br&gt;&amp;gt; JUnit. &amp;nbsp;This will allow us to improve our Gradle TeamCity runner so 
&lt;br&gt;&amp;gt; that it gets better (and real time) test results. &amp;nbsp;I'm thinking along 
&lt;br&gt;&amp;gt; the lines of &amp;quot;if a listener of a certain type is registered with the 
&lt;br&gt;&amp;gt; listener manager, then give a remoting listener to JUnit that sends 
&lt;br&gt;&amp;gt; messages to an in-process peer that forwards the messages on to the 
&lt;br&gt;&amp;gt; registered listener.&amp;quot; &amp;nbsp;Do that make sense?
&lt;/div&gt;&lt;br&gt;This would be nice to have.
&lt;br&gt;&lt;br&gt;I suspect most of the work has been done already in the NativeTest task, 
&lt;br&gt;so that the events are available just below the surface of the 
&lt;br&gt;NativeTest task. We'd need to add some methods for adding a TestListener 
&lt;br&gt;to NativeTest, with an impl of that used a ListenerManager to create its 
&lt;br&gt;broadcaster. Then, the TestListener events would be available in the 
&lt;br&gt;init script.
&lt;br&gt;&lt;br&gt;I don't think we should bother with trying to fit this into the AntTest 
&lt;br&gt;task as well, and should instead focus on getting the NativeTest stuff 
&lt;br&gt;ready.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Second is extension support. &amp;nbsp;This is the idea that a script can ask 
&lt;br&gt;&amp;gt; for some external script to be executed against a given delegate 
&lt;br&gt;&amp;gt; object. &amp;nbsp;Doing this through Gradle would allow for all the normal 
&lt;br&gt;&amp;gt; caching stuff to be reused. &amp;nbsp;We need to be able to run such scripts 
&lt;br&gt;&amp;gt; from the settings.gradle (and from inside build scripts, but that is 
&lt;br&gt;&amp;gt; obvious). &amp;nbsp;We would use this feature to define our own custom domain 
&lt;br&gt;&amp;gt; objects that are configured via external script files. &amp;nbsp;I'm not sure 
&lt;br&gt;&amp;gt; what the interface to Gradle should be, a method on Gradle called 
&lt;br&gt;&amp;gt; &amp;quot;executeExtension&amp;quot; that takes a file and a delegate object? &amp;nbsp;Or maybe 
&lt;br&gt;&amp;gt; a &amp;quot;getExtensionSupport&amp;quot; method that returns an ExtensionSupport class 
&lt;br&gt;&amp;gt; that provides an execute method? &amp;nbsp;What stateful information could 
&lt;br&gt;&amp;gt; ExtensionSupport have that justifies a separate class? &amp;nbsp;Or maybe the 
&lt;br&gt;&amp;gt; justification is that it provides more than one method, like what? &amp;nbsp;
&lt;br&gt;&amp;gt; I'm not sure what you guys might be thinking about this feature as we 
&lt;br&gt;&amp;gt; have not discussed it much before.
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;Why do you need to do the configuration using external scripts? What do 
&lt;br&gt;they configure? I want to get a feel for the use case before we discuss 
&lt;br&gt;a solution.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Adam Murdoch
&lt;br&gt;Gradle Developer
&lt;br&gt;&lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26450099.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26449711</id>
	<title>Adding two new features to Gradle</title>
	<published>2009-11-20T12:22:42Z</published>
	<updated>2009-11-20T12:22:42Z</updated>
	<author>
		<name>John Murph</name>
	</author>
	<content type="html">Hans and Adam (and anyone else who might care),&lt;br&gt;&lt;br&gt;I&amp;#39;m about to start hacking at Gradle again.  I&amp;#39;ve got two tasks on my list.  I wanted to let both of you know that I&amp;#39;m working on these and see if you had any ideas or concerns before I get to far into it.  I hope to work on these next week while I&amp;#39;m on Thanksgiving vacation (I have no idea how much I&amp;#39;ll actually get done...).&lt;br&gt;
&lt;br&gt;First is TestListener.  This (if you can recall that far back) was the reason I did the listener manager changes.  We need to have an init script that can register a listener that gets testing feedback from JUnit.  This will allow us to improve our Gradle TeamCity runner so that it gets better (and real time) test results.  I&amp;#39;m thinking along the lines of &amp;quot;if a listener of a certain type is registered with the listener manager, then give a remoting listener to JUnit that sends messages to an in-process peer that forwards the messages on to the registered listener.&amp;quot;  Do that make sense?&lt;br&gt;
&lt;br&gt;Second is extension support.  This is the idea that a script can ask for some external script to be executed against a given delegate object.  Doing this through Gradle would allow for all the normal caching stuff to be reused.  We need to be able to run such scripts from the settings.gradle (and from inside build scripts, but that is obvious).  We would use this feature to define our own custom domain objects that are configured via external script files.  I&amp;#39;m not sure what the interface to Gradle should be, a method on Gradle called &amp;quot;executeExtension&amp;quot; that takes a file and a delegate object?  Or maybe a &amp;quot;getExtensionSupport&amp;quot; method that returns an ExtensionSupport class that provides an execute method?  What stateful information could ExtensionSupport have that justifies a separate class?  Or maybe the justification is that it provides more than one method, like what?  I&amp;#39;m not sure what you guys might be thinking about this feature as we have not discussed it much before.&lt;br&gt;
&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;John Murph&lt;br&gt;Automated Logic Research Team&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Adding-two-new-features-to-Gradle-tp26449711p26449711.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26449543</id>
	<title>Re: performance</title>
	<published>2009-11-20T12:09:26Z</published>
	<updated>2009-11-20T12:09:26Z</updated>
	<author>
		<name>Adam Murdoch-2</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;Steve Appling wrote:
&lt;br&gt;&amp;gt; I'll send a snapshot to both of you off of the list. &amp;nbsp;It looks to me like
&lt;br&gt;&amp;gt; 40% of the time is spent in 
&lt;br&gt;&amp;gt; o.g.a.i.changedetection.CachingHasher.hash. &amp;nbsp;That's why I was thinking 
&lt;br&gt;&amp;gt; it was the up to date checks. &amp;nbsp;How about an option to make this just 
&lt;br&gt;&amp;gt; based on timestamp and length instead of hashing the contents?
&lt;br&gt;&lt;br&gt;It should calculate a hash only when timestamp or length changes. Of 
&lt;br&gt;course, it may be broken ...
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Adam Murdoch wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Steve Appling wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; After Hans' dependency resolution performance fix, the huge 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; performance problem we saw has been fixed (thanks Hans!). &amp;nbsp;I still 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; find, however, that the overhead of all the up to date checking is 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; not worth it. &amp;nbsp;When everything is up to date and there is nothing to 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; do, running &amp;quot;build -xtest&amp;quot; for our big project in the 0.8 version 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; takes about 1:11 (min:sec) and doing the same thing with the current 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; trunk version takes 1:24.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Is there a way to disable the up to date checks for particular 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; tasks? &amp;nbsp;I don't think it is currently useful for compileJava or Copy 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; type of tasks and would like to try disabling it there.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; How about we make the checking faster, instead? The new stuff has not 
&lt;br&gt;&amp;gt;&amp;gt; been heavily profiled or optimised. I was hoping to get back into 
&lt;br&gt;&amp;gt;&amp;gt; making this faster next week. I'm pretty confident we can get close 
&lt;br&gt;&amp;gt;&amp;gt; for 'build -x test'. Of course, plain 'build' should already be faster.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Of course, your numbers don't really say anything more than something 
&lt;br&gt;&amp;gt;&amp;gt; is slower in trunk. It could be anything, so let's measure before we 
&lt;br&gt;&amp;gt;&amp;gt; optimise. Any chance you could send me a profiling snapshot of the 
&lt;br&gt;&amp;gt;&amp;gt; above build. Or if not, I can add some logging and we can see where 
&lt;br&gt;&amp;gt;&amp;gt; the time is being taken.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;Adam Murdoch
&lt;br&gt;Gradle Developer
&lt;br&gt;&lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/performance-tp26448661p26449543.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26449383</id>
	<title>Re: performance</title>
	<published>2009-11-20T11:58:01Z</published>
	<updated>2009-11-20T11:58:01Z</updated>
	<author>
		<name>Steve Appling</name>
	</author>
	<content type="html">I'll send a snapshot to both of you off of the list. &amp;nbsp;It looks to me like
&lt;br&gt;40% of the time is spent in o.g.a.i.changedetection.CachingHasher.hash. &amp;nbsp;That's 
&lt;br&gt;why I was thinking it was the up to date checks. &amp;nbsp;How about an option to make 
&lt;br&gt;this just based on timestamp and length instead of hashing the contents?
&lt;br&gt;&lt;br&gt;Adam Murdoch wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Steve Appling wrote:
&lt;br&gt;&amp;gt;&amp;gt; After Hans' dependency resolution performance fix, the huge 
&lt;br&gt;&amp;gt;&amp;gt; performance problem we saw has been fixed (thanks Hans!). &amp;nbsp;I still 
&lt;br&gt;&amp;gt;&amp;gt; find, however, that the overhead of all the up to date checking is not 
&lt;br&gt;&amp;gt;&amp;gt; worth it. &amp;nbsp;When everything is up to date and there is nothing to do, 
&lt;br&gt;&amp;gt;&amp;gt; running &amp;quot;build -xtest&amp;quot; for our big project in the 0.8 version takes 
&lt;br&gt;&amp;gt;&amp;gt; about 1:11 (min:sec) and doing the same thing with the current trunk 
&lt;br&gt;&amp;gt;&amp;gt; version takes 1:24.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Is there a way to disable the up to date checks for particular tasks? &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; I don't think it is currently useful for compileJava or Copy type of 
&lt;br&gt;&amp;gt;&amp;gt; tasks and would like to try disabling it there.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; How about we make the checking faster, instead? The new stuff has not 
&lt;br&gt;&amp;gt; been heavily profiled or optimised. I was hoping to get back into making 
&lt;br&gt;&amp;gt; this faster next week. I'm pretty confident we can get close for 'build 
&lt;br&gt;&amp;gt; -x test'. Of course, plain 'build' should already be faster.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Of course, your numbers don't really say anything more than something is 
&lt;br&gt;&amp;gt; slower in trunk. It could be anything, so let's measure before we 
&lt;br&gt;&amp;gt; optimise. Any chance you could send me a profiling snapshot of the above 
&lt;br&gt;&amp;gt; build. Or if not, I can add some logging and we can see where the time 
&lt;br&gt;&amp;gt; is being taken.
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;Steve Appling
&lt;br&gt;Automated Logic Research Team
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/performance-tp26448661p26449383.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26449370</id>
	<title>Re: performance</title>
	<published>2009-11-20T11:57:03Z</published>
	<updated>2009-11-20T11:57:03Z</updated>
	<author>
		<name>hdockter</name>
	</author>
	<content type="html">&lt;br&gt;On Nov 20, 2009, at 8:47 PM, Steve Appling wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Do you want another profile snapshot from us now that your fix has been applied? &amp;nbsp;If so, is sampling ok?
&lt;br&gt;&lt;br&gt;As Adam said, that would be good to have. Sampling would be OK I think.
&lt;br&gt;&lt;br&gt;- Hans
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Hans Dockter
&lt;br&gt;Gradle Project Manager
&lt;br&gt;&lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Hans Dockter wrote:
&lt;br&gt;&amp;gt;&amp;gt; On Nov 20, 2009, at 8:05 PM, Steve Appling wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; After Hans' dependency resolution performance fix, the huge performance problem we saw has been fixed (thanks Hans!). &amp;nbsp;I still find, however, that the overhead of all the up to date checking is not worth it. &amp;nbsp;When everything is up to date and there is nothing to do, running &amp;quot;build -xtest&amp;quot; for our big project in the 0.8 version takes about 1:11 (min:sec) and doing the same thing with the current trunk version takes 1:24.
&lt;br&gt;&amp;gt;&amp;gt; In my test project I had the following profiling results. For a build were nothing needed to be done, 40 percent of the time consumed Ivy for coming up with the dependencies. The state change checking needs the classpath to do comparisons. 10 percent of the time was consumed by our Ivy result translation (we might be able to improve this). This test project did not have many source files. It will be interesting to see whether with a larger codebase source change detection will play an important role here. - Hans
&lt;br&gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt; Hans Dockter
&lt;br&gt;&amp;gt;&amp;gt; Gradle Project Manager
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Is there a way to disable the up to date checks for particular tasks? &amp;nbsp;I don't think it is currently useful for compileJava or Copy type of tasks and would like to try disabling it there.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -- 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Steve Appling
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Automated Logic Research Team
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; To unsubscribe from this list, please visit:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;&lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt;&amp;gt; To unsubscribe from this list, please visit:
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; Steve Appling
&lt;br&gt;&amp;gt; Automated Logic Research Team
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe from this list, please visit:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/performance-tp26448661p26449370.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26449294</id>
	<title>Re: performance</title>
	<published>2009-11-20T11:49:26Z</published>
	<updated>2009-11-20T11:49:26Z</updated>
	<author>
		<name>Adam Murdoch-2</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;Steve Appling wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; After Hans' dependency resolution performance fix, the huge 
&lt;br&gt;&amp;gt; performance problem we saw has been fixed (thanks Hans!). &amp;nbsp;I still 
&lt;br&gt;&amp;gt; find, however, that the overhead of all the up to date checking is not 
&lt;br&gt;&amp;gt; worth it. &amp;nbsp;When everything is up to date and there is nothing to do, 
&lt;br&gt;&amp;gt; running &amp;quot;build -xtest&amp;quot; for our big project in the 0.8 version takes 
&lt;br&gt;&amp;gt; about 1:11 (min:sec) and doing the same thing with the current trunk 
&lt;br&gt;&amp;gt; version takes 1:24.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is there a way to disable the up to date checks for particular tasks? &amp;nbsp;
&lt;br&gt;&amp;gt; I don't think it is currently useful for compileJava or Copy type of 
&lt;br&gt;&amp;gt; tasks and would like to try disabling it there.
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;How about we make the checking faster, instead? The new stuff has not 
&lt;br&gt;been heavily profiled or optimised. I was hoping to get back into making 
&lt;br&gt;this faster next week. I'm pretty confident we can get close for 'build 
&lt;br&gt;-x test'. Of course, plain 'build' should already be faster.
&lt;br&gt;&lt;br&gt;Of course, your numbers don't really say anything more than something is 
&lt;br&gt;slower in trunk. It could be anything, so let's measure before we 
&lt;br&gt;optimise. Any chance you could send me a profiling snapshot of the above 
&lt;br&gt;build. Or if not, I can add some logging and we can see where the time 
&lt;br&gt;is being taken.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Adam Murdoch
&lt;br&gt;Gradle Developer
&lt;br&gt;&lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/performance-tp26448661p26449294.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26449269</id>
	<title>Re: performance</title>
	<published>2009-11-20T11:47:05Z</published>
	<updated>2009-11-20T11:47:05Z</updated>
	<author>
		<name>Steve Appling</name>
	</author>
	<content type="html">Do you want another profile snapshot from us now that your fix has been applied? 
&lt;br&gt;&amp;nbsp; If so, is sampling ok?
&lt;br&gt;&lt;br&gt;Hans Dockter wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Nov 20, 2009, at 8:05 PM, Steve Appling wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; After Hans' dependency resolution performance fix, the huge performance problem we saw has been fixed (thanks Hans!). &amp;nbsp;I still find, however, that the overhead of all the up to date checking is not worth it. &amp;nbsp;When everything is up to date and there is nothing to do, running &amp;quot;build -xtest&amp;quot; for our big project in the 0.8 version takes about 1:11 (min:sec) and doing the same thing with the current trunk version takes 1:24.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In my test project I had the following profiling results. For a build were nothing needed to be done, 40 percent of the time consumed Ivy for coming up with the dependencies. The state change checking needs the classpath to do comparisons. 10 percent of the time was consumed by our Ivy result translation (we might be able to improve this). This test project did not have many source files. It will be interesting to see whether with a larger codebase source change detection will play an important role here. 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; - Hans
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Hans Dockter
&lt;br&gt;&amp;gt; Gradle Project Manager
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Is there a way to disable the up to date checks for particular tasks? &amp;nbsp;I don't think it is currently useful for compileJava or Copy type of tasks and would like to try disabling it there.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; -- 
&lt;br&gt;&amp;gt;&amp;gt; Steve Appling
&lt;br&gt;&amp;gt;&amp;gt; Automated Logic Research Team
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt;&amp;gt; To unsubscribe from this list, please visit:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe from this list, please visit:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;Steve Appling
&lt;br&gt;Automated Logic Research Team
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/performance-tp26448661p26449269.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26449232</id>
	<title>Re: performance</title>
	<published>2009-11-20T11:44:14Z</published>
	<updated>2009-11-20T11:44:14Z</updated>
	<author>
		<name>hdockter</name>
	</author>
	<content type="html">&lt;br&gt;On Nov 20, 2009, at 8:05 PM, Steve Appling wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; After Hans' dependency resolution performance fix, the huge performance problem we saw has been fixed (thanks Hans!). &amp;nbsp;I still find, however, that the overhead of all the up to date checking is not worth it. &amp;nbsp;When everything is up to date and there is nothing to do, running &amp;quot;build -xtest&amp;quot; for our big project in the 0.8 version takes about 1:11 (min:sec) and doing the same thing with the current trunk version takes 1:24.
&lt;br&gt;&lt;br&gt;In my test project I had the following profiling results. For a build were nothing needed to be done, 40 percent of the time consumed Ivy for coming up with the dependencies. The state change checking needs the classpath to do comparisons. 10 percent of the time was consumed by our Ivy result translation (we might be able to improve this). This test project did not have many source files. It will be interesting to see whether with a larger codebase source change detection will play an important role here. 
&lt;br&gt;&lt;br&gt;- Hans
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Hans Dockter
&lt;br&gt;Gradle Project Manager
&lt;br&gt;&lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Is there a way to disable the up to date checks for particular tasks? &amp;nbsp;I don't think it is currently useful for compileJava or Copy type of tasks and would like to try disabling it there.
&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; Steve Appling
&lt;br&gt;&amp;gt; Automated Logic Research Team
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe from this list, please visit:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/performance-tp26448661p26449232.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26448661</id>
	<title>performance</title>
	<published>2009-11-20T11:05:30Z</published>
	<updated>2009-11-20T11:05:30Z</updated>
	<author>
		<name>Steve Appling</name>
	</author>
	<content type="html">After Hans' dependency resolution performance fix, the huge performance problem 
&lt;br&gt;we saw has been fixed (thanks Hans!). &amp;nbsp;I still find, however, that the overhead 
&lt;br&gt;of all the up to date checking is not worth it. &amp;nbsp;When everything is up to date 
&lt;br&gt;and there is nothing to do, running &amp;quot;build -xtest&amp;quot; for our big project in the 
&lt;br&gt;0.8 version takes about 1:11 (min:sec) and doing the same thing with the current 
&lt;br&gt;trunk version takes 1:24.
&lt;br&gt;&lt;br&gt;Is there a way to disable the up to date checks for particular tasks? &amp;nbsp;I don't 
&lt;br&gt;think it is currently useful for compileJava or Copy type of tasks and would 
&lt;br&gt;like to try disabling it there.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Steve Appling
&lt;br&gt;Automated Logic Research Team
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/performance-tp26448661p26448661.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26438079</id>
	<title>Re: userguide to epub script</title>
	<published>2009-11-19T19:59:07Z</published>
	<updated>2009-11-19T19:59:07Z</updated>
	<author>
		<name>Adam Murdoch-2</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;P. Siegmann wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi All,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I've written a script that generates an epub document from the gradle
&lt;br&gt;&amp;gt; userguide html.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The output is not perfect.
&lt;br&gt;&amp;gt; The biggest problem right now is that there is some tabs/spaces wrongness
&lt;br&gt;&amp;gt; going on in the code samples.
&lt;br&gt;&amp;gt; However, it does work and the result can be seen at
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.siegmann.nl/gradleuserguide.epub&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.siegmann.nl/gradleuserguide.epub&lt;/a&gt;.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If more people are interested in this capability the script could be
&lt;br&gt;&amp;gt; integrated into the regular gradle userguide build, but that is currently
&lt;br&gt;&amp;gt; beyond my gradle capabilities.
&lt;br&gt;&amp;gt; Is there someone willing to integrate the script in the userguide build
&lt;br&gt;&amp;gt; procedure?
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;Thanks for providing this. I will have a look at integrating it into 
&lt;br&gt;Gradle's build.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Adam Murdoch
&lt;br&gt;Gradle Developer
&lt;br&gt;&lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/userguide-to-epub-script-tp26379028p26438079.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26403597</id>
	<title>Install doesn't work:  Is this a Breaking Change?</title>
	<published>2009-11-17T23:26:01Z</published>
	<updated>2009-11-17T23:26:01Z</updated>
	<author>
		<name>Russel Winder-4</name>
	</author>
	<content type="html">In ~/.gradle/gradle.properties I have:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; gradle_installPath = /${user.home}/lib/JavaPackages/gradle-trunk
&lt;br&gt;&lt;br&gt;till today this worked fine -- the string was interpreted as a GString
&lt;br&gt;and the property expanded at install time. &amp;nbsp;As of this morning this is
&lt;br&gt;not the case, the string appears not to be treated as a GString, but as
&lt;br&gt;a String which means no property expansion :-(
&lt;br&gt;&lt;br&gt;Is there an alternative that is now to be used?
&lt;br&gt;&lt;br&gt;Thanks.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Russel.
&lt;br&gt;=============================================================================
&lt;br&gt;Dr Russel Winder &amp;nbsp; &amp;nbsp; &amp;nbsp;Partner
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xmpp: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26403597&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;russel@...&lt;/a&gt;
&lt;br&gt;Concertant LLP &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t: +44 20 7585 2200, +44 20 7193 9203
&lt;br&gt;41 Buckmaster Road, &amp;nbsp; f: +44 8700 516 084 &amp;nbsp; voip: sip:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26403597&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;russel.winder@...&lt;/a&gt;
&lt;br&gt;London SW11 1EN, UK &amp;nbsp; m: +44 7770 465 077 &amp;nbsp; skype: russel_winder
&lt;br&gt;&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26403597/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Install-doesn%27t-work%3A--Is-this-a-Breaking-Change--tp26403597p26403597.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26380512</id>
	<title>Re: Some archive stuff</title>
	<published>2009-11-16T14:06:48Z</published>
	<updated>2009-11-16T14:06:48Z</updated>
	<author>
		<name>Tomek Kaczanowski-3</name>
	</author>
	<content type="html">&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; fileMode = 755
&lt;br&gt;&amp;gt; fileMode = &amp;quot;rwxr-xr-x&amp;quot;,
&lt;br&gt;&amp;gt; fileMode = &amp;quot;ugo+x&amp;quot;
&lt;br&gt;would be really nice to be able to use all of them
&lt;br&gt;&lt;br&gt;but if I had to choose I would vote for the first one
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Tomek
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe from this list, please visit:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Some-archive-stuff-tp26377935p26380512.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26380441</id>
	<title>Re: Some archive stuff</title>
	<published>2009-11-16T14:04:40Z</published>
	<updated>2009-11-16T14:04:40Z</updated>
	<author>
		<name>hdockter</name>
	</author>
	<content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;&lt;br&gt;&lt;div&gt;&lt;div&gt;On Nov 16, 2009, at 10:06 PM, Adam Murdoch wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;
&lt;div bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;
&lt;br&gt;
&lt;br&gt;
Hans Dockter wrote:
&lt;blockquote cite=&quot;mid:08D7B60D-4E10-46E9-9573-0258D2CFF159@dockter.biz&quot; type=&quot;cite&quot;&gt;
  &lt;pre wrap=&quot;&quot;&gt;one more issue:

If I create the following zip:

task permissions(type: Zip) {
   baseName = &quot;permissions&quot;
   from('foo') {
      fileMode = 755
   }
}

After unzipping the zip, I have the following permissions for foo: --wxrw--wx  1 hans  hans   12 Nov 16 20:15 foo

  &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br&gt;
You need to use octal for 755 to work, ie fileMode = 0755. You've asked
for 0363, above, which is what you got.&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;I understand. I guess I was in Ant mode, which uses 3-digit octal notation.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;
&lt;br&gt;
Perhaps an integer type is not the best option for this property.&amp;nbsp;
Maybe a string would be better instead, something like fileMode =
&quot;rwxr-xr-x&quot;, or fileMode = &quot;ugo+x&quot;&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;May be. Although I'm fine with the integer notation.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;- Hans&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;Hans Dockter&lt;/div&gt;&lt;div&gt;Gradle Project Manager&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;
&lt;br&gt;
&lt;br&gt;
&lt;blockquote cite=&quot;mid:08D7B60D-4E10-46E9-9573-0258D2CFF159@dockter.biz&quot; type=&quot;cite&quot;&gt;
  &lt;pre wrap=&quot;&quot;&gt;- Hans

--
Hans Dockter
Gradle Project Manager
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.gradle.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;

On Nov 16, 2009, at 8:28 PM, Hans Dockter wrote:

  &lt;/pre&gt;
  &lt;blockquote type=&quot;cite&quot;&gt;
    &lt;pre wrap=&quot;&quot;&gt;There are some issues left with our very nice new archive handling.

usePlugin('base')

task topLevelInclude(type: Zip) {
  baseName = &quot;topLevelInclude&quot;
  include &quot;foo&quot;
}

task inheritInto(type: Zip) {
  baseName = &quot;inheritInfo&quot;
  into &quot;bar&quot;
  from('foo')
}

- The topLevelInclude zip is empty. I would expect it to include foo.
- The inheritInto zip has foo as a first level file. I would expect it to be in bar/foo.

I have attached a zip with the test project.

- Hans

--
Hans Dockter
Gradle Project Manager
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.gradle.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;





&amp;lt;archivetest.zip&amp;gt;---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;
    &lt;/pre&gt;
  &lt;/blockquote&gt;
  &lt;pre wrap=&quot;&quot;&gt;&lt;!----&gt;

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;


  &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;pre class=&quot;moz-signature&quot; cols=&quot;72&quot;&gt;-- 
Adam Murdoch
Gradle Developer
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.gradle.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;
&lt;/pre&gt;
&lt;/div&gt;

&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/body&gt;&lt;/html&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Some-archive-stuff-tp26377935p26380441.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26379469</id>
	<title>Re: Some archive stuff</title>
	<published>2009-11-16T13:06:47Z</published>
	<updated>2009-11-16T13:06:47Z</updated>
	<author>
		<name>Adam Murdoch-2</name>
	</author>
	<content type="html">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;meta content=&quot;text/html;charset=ISO-8859-1&quot; http-equiv=&quot;Content-Type&quot;&gt;
&lt;/head&gt;
&lt;body bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;
&lt;br&gt;
&lt;br&gt;
Hans Dockter wrote:
&lt;blockquote cite=&quot;mid:08D7B60D-4E10-46E9-9573-0258D2CFF159@dockter.biz&quot; type=&quot;cite&quot;&gt;
  &lt;pre wrap=&quot;&quot;&gt;one more issue:

If I create the following zip:

task permissions(type: Zip) {
   baseName = &quot;permissions&quot;
   from('foo') {
      fileMode = 755
   }
}

After unzipping the zip, I have the following permissions for foo: --wxrw--wx  1 hans  hans   12 Nov 16 20:15 foo

  &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br&gt;
You need to use octal for 755 to work, ie fileMode = 0755. You've asked
for 0363, above, which is what you got.&lt;br&gt;
&lt;br&gt;
Perhaps an integer type is not the best option for this property.&amp;nbsp;
Maybe a string would be better instead, something like fileMode =
&quot;rwxr-xr-x&quot;, or fileMode = &quot;ugo+x&quot;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;blockquote cite=&quot;mid:08D7B60D-4E10-46E9-9573-0258D2CFF159@dockter.biz&quot; type=&quot;cite&quot;&gt;
  &lt;pre wrap=&quot;&quot;&gt;- Hans

--
Hans Dockter
Gradle Project Manager
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;

On Nov 16, 2009, at 8:28 PM, Hans Dockter wrote:

  &lt;/pre&gt;
  &lt;blockquote type=&quot;cite&quot;&gt;
    &lt;pre wrap=&quot;&quot;&gt;There are some issues left with our very nice new archive handling.

usePlugin('base')

task topLevelInclude(type: Zip) {
  baseName = &quot;topLevelInclude&quot;
  include &quot;foo&quot;
}

task inheritInto(type: Zip) {
  baseName = &quot;inheritInfo&quot;
  into &quot;bar&quot;
  from('foo')
}

- The topLevelInclude zip is empty. I would expect it to include foo.
- The inheritInto zip has foo as a first level file. I would expect it to be in bar/foo.

I have attached a zip with the test project.

- Hans

--
Hans Dockter
Gradle Project Manager
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;





&amp;lt;archivetest.zip&amp;gt;---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;
    &lt;/pre&gt;
  &lt;/blockquote&gt;
  &lt;pre wrap=&quot;&quot;&gt;&lt;!----&gt;

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://xircles.codehaus.org/manage_email&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;


  &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;pre class=&quot;moz-signature&quot; cols=&quot;72&quot;&gt;-- 
Adam Murdoch
Gradle Developer
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.gradle.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gradle.org&lt;/a&gt;
&lt;/pre&gt;
&lt;/body&gt;
&lt;/html&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Some-archive-stuff-tp26377935p26379469.html" />
</entry>

</feed>
