On 15-Jan-08, at 1:37 AM, Nigel Magnay wrote:
.. a hollow voice says 'Plugh'.
I just built again this morning, and it's doing something slightly
different, but it's still not resolving mavenprojects with properties
in them correctly.
Is this stuff still being worked on in 2.1 - I.E is it stable?
It's the basis for all IDE integration. We work on it a lot, but it is
trunk and not ready for public consumption. Use it at your own risk.
The artifact resolution API is changing but the one new method will
not be integrated into Maven proper until we have visualization and
some semblance of a spec for people to read. You can look at the
current IDE integration but the API for embedding will only be final
when 2.1 comes out which has no current release date right now.
Am I supposed to replace things like
resolver.resolve( artifact, remoteRepositories, localRepository );
File artifactFile = artifact.getFile();
(from the mojo developers cookbook) with
ArtifactResolutionRequest arr = new ArtifactResolutionRequest();
arr.setArtifact(artifact);
// set some large number of parameters
ArtifactResolutionResult ares = getResolver().resolve( arr );
File artifactFile = artifact.getFile();
? (and the fact artifactFile == null is down to me not geting the
resolution request runes correct) ?
or should I be using
String path = getLocalRepository().pathOf(artifact);
File artifactFile = new File( new
File(getLocalRepository().getBasedir()), path );
?
What about
MavenProject mavenProject =
getMavenProjectBuilder().buildFromRepository(artifact,
getRemoteRepositories(), getLocalRepository() );
Does that rely on the artifact having been resolved? Have I missed
some new API ?
On Jan 14, 2008 1:05 PM, Nigel Magnay <[EMAIL PROTECTED]> wrote:
Hello.
I'm trying to adapt some old code from a plugin into a standalone
project, so I've been looking at the maven Embedder. Since this seems
to be dead in the current releases, I've moved to the 2.1-SNAPSHOTS.
However, some things that I used to do have changed, and I'm
experiencing the rising wave of frustration that I get whenever I get
anywhere near the maven codebase.
I'm sure it's really simple, but I'm getting a bit lost.
With an artifact I used to do
resolver.resolve(artifact, remoteRepositories, localRepository);
File artifactFile = artifact.getFile();
MavenProject mavenProject =
mavenProjectBuilder.buildFromRepository(
artifact, remoteRepositories,
localRepository);
for(Iterator i = mavenProject.createArtifacts(getArtifactFactory(),
null, null).iterator(); i.hasNext();)
{
// blah blah blah etc
}
Now it appears I'm supposed to use an ArtifactResolutionRequest, and
make sure a lot of extraneous parameters are set. But, the
mavenProject that I get back hasn't resolved any variables defined in
the pom in the repository (I.E I get a version of ${my-property-
value}
rather than a resolved value, that I used to get before). Have I
missed something, or more likely failed to set some parameter
somewhere?
Also, one of the things I don't understand is the way the Artifact
interfaces are designed. Surely an 'unresolved' Artifact
(getFile()==null) and a 'resolved' artifact (getFile()!=null) are
different things? The 1st is a coordinate (or a handle), and the
latter is an actual instance? Having the artifact 'changed' by
feeding
it through a resolve() or an ArtifactResolver feels a bit too magic
to
me.. Also the ArtifactResolutionRequest passed to ArtifactResolver
seems to me to be more complex than before (where I just passed local
and remote repositories) - now I've got to set artifact dependencies
(to an empty set) to prevent NPEs elsewhere. And even the
ArtifactResolutionRequest contains an ArtifactRepository?!? Why isn't
it more like 'here's an interface that takes a coordinate and gives
you an artifact', if that's a local repository, it's easy, if it's a
'resolver' it may cause a download ?
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Thanks,
Jason
----------------------------------------------------------
Jason van Zyl
Founder, Apache Maven
jason at sonatype dot com
----------------------------------------------------------
People develop abstractions by generalizing from concrete examples.
Every attempt to determine the correct abstraction on paper without
actually developing a running system is doomed to failure. No one
is that smart. A framework is a resuable design, so you develop it by
looking at the things it is supposed to be a design of. The more
examples
you look at, the more general your framework will be.
-- Ralph Johnson & Don Roberts, Patterns for Evolving Frameworks
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]