On 2/03/10 2:23 AM, Shay Banon wrote:
Hi Hans,
Any update on this feature?
I think it's pretty much implemented now in trunk (minus user guide
updates).
The changes are to MavenPom. You use either the whenConfigured() or
withXml() method to adjust the pom after Gradle has configured it:
http://gradle.org/latest/docs/javadoc/org/gradle/api/artifacts/maven/MavenPom.html
Each MavenDeployer has an associated MavenPom:
uploadArchives {
repositories {
mavenDeployer {
assert pom instanceof MavenPom
}
}
}
There's an example usage in
$gradleHome/samples/maven/pomGeneration/build.gradle
I also use gradle for an open source project
and would like to get it into sonatype and in turn into central, and am
missing the handles to further configure the pom. Is there a jira issue
tracking this?
Cheers,
Shay
Hans Dockter wrote:
Hi Nacho,
unfortunately I can't see any hooks for this. But I have started to work
on
that. What we will do is to use a MavenProject class under the hood. We
will
provide a couple of convenient methods to configure it. But you can always
access the native Maven class for configuration that is not exposed by the
Gradle class. We should even add a third layer that provides a hook into
the
generated XML. I should make progress on this pretty soon. I hope I can
commit something tomorrow.
- Hans
--
Hans Dockter
Founder, Gradle
http://www.gradle.org, http://twitter.com/gradleorg
CEO, Gradle Inc. - Gradle Training, Support, Consulting
http://www.gradle.biz
On Mon, Feb 22, 2010 at 12:42 PM, Nacho Coloma<[email protected]> wrote:
Thanks Hank. I was already working on my workaround, but I'm stuck.
The following code seems to work, but I don't know how to plug it
after the POM generation (I thought it was a separate task, but it's
not). Any help?
===
def parsedPom = new XmlSlurper().parse(new
File('~/workspace/tldgen/build/poms/pom-default.xml'))
parsedPom.appendNode({
name('The TLDGen project')
description('Generate TLD and HTML files from Java annotations')
url('http://code.google.com/p/tldgen/')
scm {
url('http://code.google.com/p/tldgen/source/browse/')
connection('scm:svn:http://tldgen.googlecode.com/svn/trunk/')
}
licenses {
license {
name('The Apache Software License, Version 2.0')
url('http://www.apache.org/licenses/LICENSE-2.0.txt')
}
}
developers {
developer {
id('icoloma')
name('Ignacio Coloma')
email('[email protected]')
}
}
}
)
def output = new groovy.xml.StreamingMarkupBuilder().bind {
mkp.xmlDeclaration()
mkp.declareNamespace("":"http://maven.apache.org/POM/4.0.0")
mkp.yield parsedPom
}
println groovy.xml.XmlUtil.serialize(output)
On Mon, Feb 22, 2010 at 12:41 PM, Hans Dockter<[email protected]> wrote:
Hi,
Gradle needs to improve here. And I will start to work on this
immediately.
First of all I will add the relevant missing properties to the pom
object.
Furthermore there should be always a backdoor to add any property to a
Maven
pom (e.g. some Maven alpha version adds a new pom element which is not
part
of the Gradle pom object).
We also will make it more intuitive to customize the Maven pom
generation
by
using dynamic properties for the relevant domain objects (e.g.
dependencies).
- Hans
--
Hans Dockter
Founder, Gradle
http://www.gradle.org, http://twitter.com/gradleorg
CEO, Gradle Inc. - Gradle Training, Support, Consulting
http://www.gradle.biz
On Mon, Feb 22, 2010 at 10:53 AM, Nacho Coloma<[email protected]>
wrote:
Just to make it clear: AFAIK, with the new way of uploading artifacts
to maven central (which goes through sonatype) any POM generated by
gradle will not be accepted.
I am considering adding a task postprocessor that edits the generated
POM using the technique proposed by Paul here. I will give it a try
and post the conclusion if successful.
Anyway, this is something that should be tacked by the maven plugin
IMHO.
On Mon, Feb 22, 2010 at 9:51 AM, Paul Speed
<[email protected]> wrote:
I don't have much to offer but I'm also in this boat... though not
as
far
along as you are, I have several projects on path to maven central
when
all
of the issues are sorted out.
I'm interested enough that I've even looked into the source to see
if
there
is a way to somehow hack in a solution. I can see that there are
various
elements of a MavenPomWriter that have interfaces and
implementations
but
I've found no way to inject a custom implementation. As a hack, it
would
seem that if one were to somehow override the
DefaultPomModuleIdWriter
that
it could be hacked to also output this other project information.
It's
not
it's job, but it's the only one placed at the right point in the
chain
to do
it easily.
Obviously, it would be nice of the gradle project supported at least
some of
these settings which might be more generally useful.
In lieu of that, I wonder what it would take to add a sort of
general
"projectDetails" Map where any sort of string or nested Map could be
set
that would then be output in a generic way as XML to the generated
POM.
There wouldn't be any model checks, but at least then we could
specify
things like:
projectDetails.description = "Foo"
projectDetails.licenses = [
license = [
name: 'FooBar'
url: 'http://..../'
]
]
...and so on, with minimal upfront changes required to gradle
internals.
Just my random $0.02,
-Paul
Nacho Coloma wrote:
Hi, we are trying to make a final release with a gradle-generated
POM.
SNAPSHOT releases were doing fine, but for a final release that
would
make it to maven central the new oss.sonatype.org upload process
fails
to validate the POM:
Failed to validate
'/org/extrema-sistemas/tldgen/1.0/tldgen-1.0.pom'
on repository 'orgextrema-sistemas-142'.
No project name found in POM.
No project description found in POM.
No project URL found in POM.
No license found in POM.
No SCM URL found in POM.
No developers found in POM.
I could not find any way to specify any of these in current Gradle
sources (even MavenPom.setLicenseHeader would not work, since it is
expecting a<license> XML entry). Is there anything I am missing?
Best regards,
Nacho.
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
--
Adam Murdoch
Gradle Developer
http://www.gradle.org
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email