On 12 Aug 07, at 8:15 PM 12 Aug 07, Shane Isbell wrote:
Okay, I have updated the proposal with more info concerning the
issues with
.NET support. Currently, NMaven handles its own resolver and
installation
based on information from its net-dependencies.xml file. This is
internal
to NMaven as you suggest it should be for any plugin. The problem
comes
up because third-party developers are not able to reuse these internal
resolver/installer implementations. Of course, I can come up with a
solution
that satisfies this reuse that is specific to NMaven; but I think
that a
general solution outside of the .NET context would be useful for other
language support.
There are two. The one in 2.0.x allows you to drop in a JAR that
contains a replacement resolver which is used. John used this for the
RPM resolver. In 2.1.x Kenney made this cleaner by allow the
specification of extension. So I'm sure you could use the same
mechanism. Kenney needs to write up exactly what he did and how it
works (nudge, nudge, wink, wink).
This may require extension of the pom (as the installation
information has to come from somewhere).
For 2.1.x it would be nice if we could extend a packaging to include
any other components that may be required. So if you're packaging is
"rpm" the required resolver is used. For a ruby gem, or shared
library the same. There may be other components that are also
required, but off the top of my head packaging could probably be the
only key we need to pull in a required language tool chain. Simple,
and we already employ it and effectively the Java tool chain is
pulled in by default. You probably want to sync up with John and Mark
because they have been doing this very type of work for close to two
years now. The .NET I imagine is not that different in sprit and the
particular language toolchain would encapsulate any of the
requirements. The only limitation might be that packaging right now
assumes variants within the same language. That being our default of
Java.
One possible solution would be to
add a requirement-installation tag as part of a general artifact
requirements section (related to the expanding classifier support
proposal)
of the pom.
If this is something that would be language specific, and we could
tie to packaging (or something else) then a set of descriptors that
map to that packaging could pull them in. I don't think you want to
have to state that in every project that might want a different
toolchain. With a simple key the toolchain should be pulled in using
the default resolver to just get the tools and then the toolchain
could bootstrap.
More details are in the proposal.
Cool, thanks.
Regards,
Shane
On 8/12/07, Jason van Zyl <[EMAIL PROTECTED]> wrote:
On 12 Aug 07, at 12:25 AM 12 Aug 07, Shane Isbell wrote:
I just submitted a new proposal here:
http://docs.codehaus.org/display/MAVENUSER/Extending+Pom+to+Include
+Artifact+Installation+Instructions
You may want to explain some of your .net specifics as with C++ we
operate decently with what he have by creating plugins. John's C
toolchain for building C and producing RPMs works fine, and so does
Mark's NAR plugin. Both are extensions to Maven for native code and
both are not perfect but work well. In short I don't think that the
POM should describe this, but reference the toolchain that supports a
particular langauge. Just happens by default for Maven it is the Java
lifecycle.
I think if you expand the .net requirements we can ask Mark and John
to expand on what they did so we get something that meshes up.
Dealing with multiple languages is important. John and Kenney have
also done work to insert custom components, like resolvers, into the
mix. For example the RPM resolver we use in the c toolchain. I call
it a toolchain for lack of a better word as this might not mesh up
with what Milos is proposing but the knowledge should be in the
toolchain for dealing with a specific language or environment. I
don't think you want to end up describing this in the POM as then you
end up having to share this information via inheritance or a profile
when really for .net you always want to use a particular set of
tools, rules, default operations or what have you.
Thanks,
Shane
Thanks,
Jason
----------------------------------------------------------
Jason van Zyl
Founder and PMC Chair, Apache Maven
jason at sonatype dot com
----------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Thanks,
Jason
----------------------------------------------------------
Jason van Zyl
Founder and PMC Chair, Apache Maven
jason at sonatype dot com
----------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]