

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
69 messages in org.codehaus.groovy.devRe: [groovy-dev] Building Groovy| From | Sent On | Attachments |
|---|---|---|
| Russel Winder | Oct 6, 2008 4:36 am | |
| Mingfai | Oct 6, 2008 4:47 am | |
| Hans Dockter | Oct 6, 2008 4:50 am | |
| Hans Dockter | Oct 6, 2008 4:55 am | |
| Jochen Theodorou | Oct 6, 2008 4:56 am | |
| Guillaume Laforge | Oct 6, 2008 7:17 am | |
| Hans Dockter | Oct 6, 2008 7:51 am | |
| Russel Winder | Oct 6, 2008 7:59 am | |
| Guillaume Laforge | Oct 6, 2008 8:19 am | |
| Guillaume Laforge | Oct 6, 2008 8:25 am | |
| Mingfai | Oct 6, 2008 8:28 am | |
| Guillaume Laforge | Oct 6, 2008 8:36 am | |
| Hans Dockter | Oct 6, 2008 1:46 pm | |
| Guillaume Laforge | Oct 6, 2008 1:54 pm | |
| Hans Dockter | Oct 6, 2008 1:54 pm | |
| Jochen Theodorou | Oct 6, 2008 2:03 pm | |
| Guillaume Laforge | Oct 6, 2008 2:09 pm | |
| Paul Duffy | Oct 6, 2008 7:06 pm | |
| Luke Daley | Oct 6, 2008 8:47 pm | |
| Guillaume Laforge | Oct 6, 2008 9:44 pm | |
| Russel Winder | Oct 6, 2008 11:25 pm | |
| Russel Winder | Oct 6, 2008 11:54 pm | |
| Russel Winder | Oct 7, 2008 12:03 am | |
| Jason Dillon | Oct 7, 2008 12:23 am | |
| Russel Winder | Oct 7, 2008 12:24 am | |
| Guillaume Laforge | Oct 7, 2008 12:30 am | |
| Hans Dockter | Oct 7, 2008 12:35 am | |
| Jason Dillon | Oct 7, 2008 12:35 am | |
| Hans Dockter | Oct 7, 2008 12:36 am | |
| Jason Dillon | Oct 7, 2008 12:41 am | |
| Guillaume Laforge | Oct 7, 2008 12:54 am | |
| Jason Dillon | Oct 7, 2008 1:40 am | |
| Guillaume Laforge | Oct 7, 2008 1:50 am | |
| Jason Dillon | Oct 7, 2008 1:55 am | |
| Guillaume Laforge | Oct 7, 2008 2:25 am | |
| Guillaume Laforge | Oct 7, 2008 2:35 am | |
| Jason Dillon | Oct 7, 2008 3:09 am | |
| Guillaume Laforge | Oct 7, 2008 3:12 am | |
| Russel Winder | Oct 7, 2008 3:17 am | |
| Jason Dillon | Oct 7, 2008 3:24 am | |
| Paul King | Oct 7, 2008 4:04 am | |
| ma...@dockter.biz | Oct 7, 2008 4:19 am | |
| ma...@dockter.biz | Oct 7, 2008 4:25 am | |
| Jason Dillon | Oct 7, 2008 4:36 am | |
| Jason Dillon | Oct 7, 2008 4:39 am | |
| Jochen Theodorou | Oct 7, 2008 5:20 am | |
| Jason Dillon | Oct 7, 2008 8:19 am | |
| Jochen Theodorou | Oct 7, 2008 9:51 am | |
| Jason Dillon | Oct 7, 2008 10:49 am | |
| Jochen Theodorou | Oct 7, 2008 12:03 pm | |
| Hans Dockter | Oct 7, 2008 2:34 pm | |
| Luke Daley | Oct 7, 2008 3:52 pm | |
| Jason Dillon | Oct 8, 2008 1:28 am | |
| Jason Dillon | Oct 8, 2008 1:35 am | |
| Hans Dockter | Oct 8, 2008 3:11 am | |
| Hans Dockter | Oct 8, 2008 3:49 am | |
| Hans Dockter | Oct 8, 2008 4:30 am | |
| Hans Dockter | Oct 8, 2008 4:40 am | |
| Jason Dillon | Oct 8, 2008 4:52 am | |
| Jason Dillon | Oct 8, 2008 5:21 am | |
| Jochen Theodorou | Oct 8, 2008 6:23 am | |
| Jochen Theodorou | Oct 8, 2008 6:47 am | |
| Jochen Theodorou | Oct 8, 2008 6:59 am | |
| Hans Dockter | Oct 8, 2008 8:33 am | |
| Hans Dockter | Oct 8, 2008 8:43 am | |
| Paul Duffy | Oct 9, 2008 8:58 am | |
| Paul King | Oct 9, 2008 1:15 pm | |
| Danno Ferrin | Oct 9, 2008 1:27 pm | |
| Paul King | Oct 10, 2008 2:31 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [groovy-dev] Building Groovy | Actions... |
|---|---|---|
| From: | Jason Dillon (jaso...@gmail.com) | |
| Date: | Oct 8, 2008 1:28:27 am | |
| List: | org.codehaus.groovy.dev | |
On Oct 8, 2008, at 2:04 AM, Jochen Theodorou wrote:
First you don't need to deploy anything to use a plugin, you can include the plugin in your reactor build and you are fine.
can you point me to some documentation about that?
I'm not sure anyone has a specific guide on this, but a M2 plugin is just a jar file with some metadata encoded which lives in a repository.
this sounds very much as if some sort of deployment is needed. I never thought about a central repository on a far away server here of course.
Repositories in Maven come in 2 flavors: local and remote. The plugin needs to be in one of them (either or both). So the process of building a module with <packaging>maven-plugin</packaging> with the install goal will build the required bits, bundle them into a .jar file and install it into the local repository. And IIRC maven might even be smart enough to find the .jar bits in the target/ directory of the module if say just a compile was asked for.
So, absolutely no remote deployment to any centralized repository is needed if you are using a plugin which is built from your projects sources.
So if in your build you have a plugin module and a module which uses the plugin, M2 will build the plugin first, install it into the local repo, then when the dependent module runs it uses that plugin. Nothing more fancy than that.
This reads a little as if there is no documentation/guide of how to write a plugin, deploy it to the local repository and then use it from your build.
Go read the documentation/guides that are there and choose for yourself. I can't say if the docs are sufficient because I almost never need to look at them anymore.
Well, that is not good enough for me anyway. It sounds like a two phase operation, where I have to do both phases. That is something lacking automatisation if it is like that.
How exactly did you determine this to be a two phase operation? If you have a project like:
pom.xml my-maven-plugin/pom.xml my-module/pom.xml
And "my-module" uses "my-maven-plugin", then when running mvn with the top-level pom.xml will build "my-maven-plugin" first, then "my-module" and the later will use the former during the build.
that is groovy embedded in XML, yes? If it is external files it won't be better. Also the question would be if I can create a plugin for the currently running m2 build while the build is running using groovy embedded in XML... I mean that would still be a media breach, but at last I don't have to scatter my build parts all of the place if I don't want to
You can embed or use external files, urls, resources, whichever you feel like.
this answers the first question, but not the second.. thinking about the deployment to a local repository and the jar that is required for it I guess it is not possible, or at last not easy.
First, you "install" to a local repository (which is basically a local file copy) and "deploy" to a remote repository (which normally involves remote protocols like ftp/sftp/dav/etc). They are very different operations.
Second, you lost me... what does a jar have to do with how you execute groovy code from a pom.xml?
again, that is groovy embedded in XML. That is still a media breach. Also, if most of your build consists of groovy, then why is it xml based at all?
Interesting, so what type of thing you are building should determine the type of system used to build? Based on that, groovy- core should use a Java-based system, since its got more .java files than .groovy or .xml files ;-)
You are making a small mistake here. Groovy is not intended to replace Java, it is part of the toolbox. Groovy is especially designed to work well together with Java. Now using anything to script m2 is quite different, because m2 is not especially designed to be scripted. I even think that doing so would be against the maven philosophy of not having build logic in the build configuration file.Of course you can write plugins in Groovy and use them like you use java plugins, but that misses the point, because this talk is more or less about having a build configuration or a build program.
Sure, I agree... then why are you going on and on about media breaching? That seems just as irrelevant and meaningless, which was my point.
Hrm... well I know that some of the M2 plugin docs are poor, though it does provide some automated tools to generate basic configuration details. Though, there are books about Maven just like there are about Ant. The user's list is quite active, so is the IRC channel on freenode. So support seems to be on par with Ant there too. Even have companies which provide professional support where its needed.
But the books won't answer the tricky questions. Professional support is not always for open source developers.
So use the very active #maven channel or the user list, per normal open-source ways of the force.
Generating basic configuration is nice and good, but that won't help with the tricky parts either. Ant is more easy, because it is less complex. m2 has an additional layer, an additional machine running inside, hidden from the normal eye, that you have to understand as well when it comes to the bad parts.
Have you ever tried to something tricky inside of Ant? I have, and its got a whole lot of goo in there which for something tricky one has to wade through, even fight sometimes, to achieve the goal. I don't see that as any different than any other tool.
Of course there is always someone able to answer the tricky question. But for example in case of ant there is so much documentation on the net, even about unusual problems, that it is easy to find solutions in most cases. Ant has been there for many years and m2 will need a long time before it can be on par with that.
Sure, the current documentation for M2 is well, not very polished. I do truly wish it was better, especially for all the supporting goo like Plexus. But documentation can only take you so far when you have something truly tricky to accomplish. In those cases you almost always have to go digging through source code, so again I don't see that as any different than any other tool.
you may have seen already, that I am not so keen about the configuration approach at all.
Sure ;-) But I'm just warning that a code-based system is eventually going to atrophy just like the Ant system has, and will become more and more complicated for new folks to comprehend and maintain. Again, my opinion... I've been wrong before though :-P
I am curious about the cases Hans wants to show...
Me too :-]
Just curious, what are the enforcement bits in M2 which have caused you problems in the past? You really can make M2 do most anything you want... its just a matter of how much extra work you want to put in to make it behave exactly how you want... vs. using the standards and letting M2 do the work for you.
I am sure that for someone who knows the internals of m2 all things are easy to do. I mean just take for example me and some strange language extension to Groovy. I can in most cases easily add that somehow. If it is a clean way or if it even should be done at all is a different question. But I can do. Now for the normal user this is more or less impossible, since he does not know the internals of Groovy and the can be complex. in ant I have internals too... sometimes many layers of indirection making me crazy if I need to find something. But after all it is not a so complicated thing and you get somehow through it. I never wrote any plugins for m2 or tried to fix bugs...
Try it sometime, it might surprise you ;-)
And speaking of which... you gonna have time to help me get GMaven using the groovyc internals one day... cause I have zero clue how to make that happen and not break anything (which I did before with my last attempt).
or get around them somehow. But from the look at the codebase of m2 I cannot say I like it very much. Again, my personal opinion, that thing that does not have to be based on facts ;) More or less my problem in m2 was always that I not even have an idea of where to start
I agree with you that the codebase is a bit unwieldy, and really the only way to effectively deal with that is to either know where all the source trees are for each version, or use an IDE which can pull sources from dependencies declared in the projects pom. This has been on my "why maven pisses me off sometimes" list for a while. But generally for plugin extensions you don't need to know all that goo... just need to know how Maven (via Plexus) handles injection of stuff you care about and then go about your business of implementing your plugin's logic. But if you say want to go an create a new life-cycle, support a new packaging type or install files with special extensions into the repository, ya you need more goo on your hands. Most folks don't need any of that though.
No, configuration was in project.xml and build logic was in maven.xml, I don't really consider that mixed at all.
hehe, yes, I remember..the project.xml contained nearly nothing and the maven.xml was a monster. In the end the project.xml did not do much and the file you always change is the maven.xml. Also if ant is configuration too and most of the action you would do in ant happens in the maven.xml, then why is the maven.xml no configuration?
And changing maven.xml adding a ton of stuff usually ended up making builds incomprehensible and difficult to maintain. This was one lesson learned from the M1 experience and why you won't find the beast in M2.
So XML configuration is fine then as long as it works?
depends. if you don't need to touch the xml, then the xml is fine with me. I just ignore it and be done with it. If I need to change the XML, then I hope that is not too big, does not use name spaces and that I don't have to introduce new ones.In the end XML is ok, if the file is small. Ever seen the XML of a complex svg graphic... Of course you can understand that somehow... you just waste so much time and you are better of with a GUI based tool instead of reading the plain text.
Kay, I get it... you don't like XML ;-)
sure, but personal taste is higly influenced by things other people say and by perception as well as the things the management forces you to do. If your idol uses ant, then you may not consider a change to m2 even if you recognize it as better tool. I dislike XML very much, so I dislike tools where I have to write xml as well.
I've never been really good at succumbing to "management forces", though I get the point. If I find something better than what is there, I usually end up convincing someone to change it... usually at the cost of a lot of stress, so maybe I won't do that anymore. Oh, but I'm super anal, so I can't help it. If something sucks, I try to unsuck it.
Important is what the one that changes the build file likes. And I think even if gradle would become very famous, there will still be people using m2 or ant.
I would say that what is important is the longevity of the build configuration over the lifetime of the project, in terms of functionality, maintainability and developer comprehension. In open-source, the needs of the many outweigh the needs of the one (yes, live long and prosper and all that too).
yes, but what are the needs of many... sometimes one is more important than many. Sometimes needs are not seen or ignored by "the many". Look at Groovy for example. There are many java programers having Java nearly as religion. Groovy gives them a nearly satanic look. And sometimes one of these simply tries Groovy and then sees that it is not bad at all and that he won't die from looking a bit more at it. Once you looked at other languages people start to learn principles Java does not have, they get a feeling of what could be and then they see that Java lacks things here and there. And depending on how much they like these lacking thins, they might even change their programming language and using Java might look as torture to them all of a sudden.
Okay, so based on that... you gonna try to write a Maven plugin now? Or has the devil still got a hold of you?
:-P
--jason
--------------------------------------------------------------------- To unsubscribe from this list, please visit:







