maven-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason van Zyl <ja...@tesla.io>
Subject Re: Meta information about dependencies in a pom?
Date Wed, 09 Nov 2011 19:57:35 GMT
Yes that's why I said to pull them out. You won't be successful in using JSR330. It only works
in Tesla, most of which will be integrated back into Maven. Just haven't had time to post
to the dev list yet. JSR330 and @Injectable SLF4J loggers are but a few of a things possible
with code that exists the Tesla repo.

But it would be easy enough to build that out as a helper where someone just needs to define
the source of their GAs they want to contribute and let the helper take care of the rest.

On Nov 9, 2011, at 7:57 AM, Jesse Glick wrote:

> On 11/09/2011 12:00 AM, Jason van Zyl wrote:
>>> today we learned about the AbstractMavenLifecycleParticipant
>> 
>> Here's an example of how it works for matching the dependencies specified from a
3rd party source to the reactor.
>> [...]
>> It's using JSR330, but you can pull those out and use Plexus annotations if you need
it to work in the short term.
> 
> A standalone example I just got to work: create a jar-packaging project with
> 
> @Component(role=AbstractMavenLifecycleParticipant.class)
> public class WhateverNameYouLike extends AbstractMavenLifecycleParticipant {
>    @Requirement private Logger log;
>    @Override public void afterProjectsRead(MavenSession session) throws MavenExecutionException
{
>        for (MavenProject p : session.getProjects()) {
>            log.info("tweaking " + p);
>            Dependency d = new Dependency();
>            d.setGroupId("org.apache.commons");
>            d.setArtifactId("commons-io");
>            d.setVersion("1.3.2");
>            p.getDependencies().add(d);
>        }
>    }
> }
> 
> built with
> 
> <build>
>    <plugins>
>        <plugin>
>            <groupId>org.codehaus.plexus</groupId>
>            <artifactId>plexus-component-metadata</artifactId>
>            <version>1.5.5</version>
>            <executions>
>                <execution>
>                    <goals>
>                        <goal>generate-metadata</goal>
>                    </goals>
>                    <id>generate-metadata</id>
>                </execution>
>            </executions>
>        </plugin>
>    </plugins>
> </build>
> <dependencies>
>    <dependency>
>        <groupId>org.apache.maven</groupId>
>        <artifactId>maven-core</artifactId>
>        <version>3.0.3</version>
>    </dependency>
> </dependencies>
> 
> Now create a quickstart project and edit the main method to say:
> 
> System.out.println(org.apache.commons.io.EndianUtils.swapInteger(1));
> 
> Once you tell it
> 
> <build>
>    <extensions>
>        <extension>
>            ...coordinates as for first project...
>        </extension>
>    </extensions>
> </build>
> 
> then it will compile (under 3.0.3) despite not itself declaring a dep on commons-io.
> 
> BTW I was not successful in using @javax.inject.Singleton in place of @Component.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
> 

Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
---------------------------------------------------------

What matters is not ideas, but the people who have them. Good people can fix bad ideas, but
good ideas can't save bad people. 

 -- Paul Graham





Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message