You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Richard Sand <rs...@idfconnect.com> on 2013/07/12 18:45:30 UTC

input artifacts to plugin

Hi all - another hopefully simple question:

Can I add a custom configuration property to my plugin which takes in the
normal <dependencies><dependency>......</ schema used in the build? E.g.
instead of calling mavenProject.getArtifacts() to get a Set<Artifact> for
the build, I'd have a @Property Set<Artifact> which maven will still resolve
& manage but specifically for use by the plugin.

As a sample, this is what I want to put into the pom.xml:

<configuration>
	<includedArtifacts>
		<includedArtifact>
			<groupId>com.somegroup</groupId>
			<artifactId>someartifact</artifactId>
			<version>1.0.1</version>
		</includedArtifact>
	</includedArtifacts>
	........

And in the plugin code:

	/**
	 * Other artifacts to include in obfuscation
	 */
	@Property 
	Set<Artifact> includedArtifacts

This doesn't work of course - Artifact cannot be instantiated... can someone
give me some hints for which portions of the API can help achieve what I'm
trying to accomplish?

Another option I have is to use a Set<String> and just enter the toString
representation of an artifact, and then look through
mavenProject.getArtifacts() to find a match. That just seems a hack to
require two different formats for specifying artifacts, but if it's the only
way, so be it.

Thanks for any input!

Richard Sand | CEO
IDF Connect, Inc. 
2207 Concord Ave, #359
Wilmington | Delaware 19803 | USA 
Office: +1 302 425 0516 | Fax: +1 856 866 1899
Mobile: +1 267 984 3651




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: input artifacts to plugin

Posted by Russell Gold <ru...@gold-family.us>.
HI Richard,

I've seen both notations used; however, I've only seen the string name approach in plugins such as jar and assembly, where they were used as filters to exclude elements from an established dependency list. 

I have written a plugin, on the other hand, which needed to pull artifacts from the repository, and used the artifacts object, with each coordinate in a separate element.

So there's good precedent for the string name approach, although I've never used it. I would check the assembly plugin and manifest utility to see how they are handled.

- Russ

On Jul 16, 2013, at 11:43 PM, Richard Sand <rs...@idfconnect.com> wrote:

> Hi Russell - the plugin I've been working on obfuscates certain artifacts of
> a project. I'm using ResolutionScope.COMPILE_PLUS_RUNTIME to gather the
> input artifacts, then the plugin configuration determines which of these
> available artifacts should be obfuscated.
> 
> Basically the question is whether my plugin configuration can easily use the
> xml elements to specify an artifact by way of some helper class in the API,
> or should I just stick to specifying each artifact by its String name, e.g.
> right now I configure the plugin as follows:
> 
> 	<configuration>
> 		<inputArtifacts>
> 	
> <inputArtifact>com.somegroup:someartifact</inputArtifact>
> 		</inputArtifacts>
> 		.....
> 
> So my question is, is it better (more "maven'ish") to specify it this way
> instead? And if so, what object from the API can I use in the @Param
> inputArtifacts object should I use instead of String?
> 
> 	<configuration>
> 		<inputArtifacts>
> 			<inputArtifact>
> 	 			<groupId>com.somegroup</groupId>
> 				<artifactId>someartifact</artifactId>
> 			<inputArtifact>
> 		</inputArtifacts>
> 
> Best regards,
> 
> Richard
> 
> -----Original Message-----
> From: Russell Gold [mailto:russ@gold-family.us] 
> Sent: Saturday, July 13, 2013 10:28 PM
> To: Maven Users List
> Subject: Re: input artifacts to plugin
> 
> HI Richard,
> 
> What do you want to do? If all you want is the compile dependencies:
> 
> 1. Configure the plugin to require compile and runtime dependency
> resolution:
> 
> @Mojo( ... requiresDependencyResolution =
> ResolutionScope.COMPILE_PLUS_RUNTIME)
> 
> 2. Specify a parameter configured to receive project.compileClassElements
> 
>  /**
>   * Compile classpath of the maven project.
>   */
>  @Parameter(defaultValue = "${project.compileClasspathElements}")
>  private List<String> projectCompileClasspathElements;
> 
> On Jul 12, 2013, at 12:45 PM, Richard Sand <rs...@idfconnect.com> wrote:
> 
>> Hi all - another hopefully simple question:
>> 
>> Can I add a custom configuration property to my plugin which takes in 
>> the normal <dependencies><dependency>......</ schema used in the build?
> E.g.
>> instead of calling mavenProject.getArtifacts() to get a Set<Artifact> 
>> for the build, I'd have a @Property Set<Artifact> which maven will 
>> still resolve & manage but specifically for use by the plugin.
>> 
>> As a sample, this is what I want to put into the pom.xml:
>> 
>> <configuration>
>> 	<includedArtifacts>
>> 		<includedArtifact>
>> 			<groupId>com.somegroup</groupId>
>> 			<artifactId>someartifact</artifactId>
>> 			<version>1.0.1</version>
>> 		</includedArtifact>
>> 	</includedArtifacts>
>> 	........
>> 
>> And in the plugin code:
>> 
>> 	/**
>> 	 * Other artifacts to include in obfuscation
>> 	 */
>> 	@Property 
>> 	Set<Artifact> includedArtifacts
>> 
>> This doesn't work of course - Artifact cannot be instantiated... can 
>> someone give me some hints for which portions of the API can help 
>> achieve what I'm trying to accomplish?
>> 
>> Another option I have is to use a Set<String> and just enter the 
>> toString representation of an artifact, and then look through
>> mavenProject.getArtifacts() to find a match. That just seems a hack to 
>> require two different formats for specifying artifacts, but if it's 
>> the only way, so be it.
>> 
>> Thanks for any input!
>> 
>> Richard Sand | CEO
>> IDF Connect, Inc. 
>> 2207 Concord Ave, #359
>> Wilmington | Delaware 19803 | USA
>> Office: +1 302 425 0516 | Fax: +1 856 866 1899
>> Mobile: +1 267 984 3651
>> 
>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>> 
> 
> -----------------
> Come read my webnovel, Take a Lemon <http://www.takealemon.com>, and listen
> to the Misfile radio play <http://www.gold-family.us/audio/misfile.html>!
> 
> 
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
> 

-----------------
Come read my webnovel, Take a Lemon <http://www.takealemon.com>, 
and listen to the Misfile radio play <http://www.gold-family.us/audio/misfile.html>!





RE: input artifacts to plugin

Posted by Richard Sand <rs...@idfconnect.com>.
Hi Russell - the plugin I've been working on obfuscates certain artifacts of
a project. I'm using ResolutionScope.COMPILE_PLUS_RUNTIME to gather the
input artifacts, then the plugin configuration determines which of these
available artifacts should be obfuscated.

Basically the question is whether my plugin configuration can easily use the
xml elements to specify an artifact by way of some helper class in the API,
or should I just stick to specifying each artifact by its String name, e.g.
right now I configure the plugin as follows:

	<configuration>
		<inputArtifacts>
	
<inputArtifact>com.somegroup:someartifact</inputArtifact>
		</inputArtifacts>
		.....

So my question is, is it better (more "maven'ish") to specify it this way
instead? And if so, what object from the API can I use in the @Param
inputArtifacts object should I use instead of String?

	<configuration>
 		<inputArtifacts>
			<inputArtifact>
	 			<groupId>com.somegroup</groupId>
 				<artifactId>someartifact</artifactId>
			<inputArtifact>
		</inputArtifacts>

Best regards,

Richard

-----Original Message-----
From: Russell Gold [mailto:russ@gold-family.us] 
Sent: Saturday, July 13, 2013 10:28 PM
To: Maven Users List
Subject: Re: input artifacts to plugin

HI Richard,

What do you want to do? If all you want is the compile dependencies:

1. Configure the plugin to require compile and runtime dependency
resolution:

@Mojo( ... requiresDependencyResolution =
ResolutionScope.COMPILE_PLUS_RUNTIME)

2. Specify a parameter configured to receive project.compileClassElements

  /**
   * Compile classpath of the maven project.
   */
  @Parameter(defaultValue = "${project.compileClasspathElements}")
  private List<String> projectCompileClasspathElements;

On Jul 12, 2013, at 12:45 PM, Richard Sand <rs...@idfconnect.com> wrote:

> Hi all - another hopefully simple question:
> 
> Can I add a custom configuration property to my plugin which takes in 
> the normal <dependencies><dependency>......</ schema used in the build?
E.g.
> instead of calling mavenProject.getArtifacts() to get a Set<Artifact> 
> for the build, I'd have a @Property Set<Artifact> which maven will 
> still resolve & manage but specifically for use by the plugin.
> 
> As a sample, this is what I want to put into the pom.xml:
> 
> <configuration>
> 	<includedArtifacts>
> 		<includedArtifact>
> 			<groupId>com.somegroup</groupId>
> 			<artifactId>someartifact</artifactId>
> 			<version>1.0.1</version>
> 		</includedArtifact>
> 	</includedArtifacts>
> 	........
> 
> And in the plugin code:
> 
> 	/**
> 	 * Other artifacts to include in obfuscation
> 	 */
> 	@Property 
> 	Set<Artifact> includedArtifacts
> 
> This doesn't work of course - Artifact cannot be instantiated... can 
> someone give me some hints for which portions of the API can help 
> achieve what I'm trying to accomplish?
> 
> Another option I have is to use a Set<String> and just enter the 
> toString representation of an artifact, and then look through
> mavenProject.getArtifacts() to find a match. That just seems a hack to 
> require two different formats for specifying artifacts, but if it's 
> the only way, so be it.
> 
> Thanks for any input!
> 
> Richard Sand | CEO
> IDF Connect, Inc. 
> 2207 Concord Ave, #359
> Wilmington | Delaware 19803 | USA
> Office: +1 302 425 0516 | Fax: +1 856 866 1899
> Mobile: +1 267 984 3651
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
> 

-----------------
Come read my webnovel, Take a Lemon <http://www.takealemon.com>, and listen
to the Misfile radio play <http://www.gold-family.us/audio/misfile.html>!







---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: input artifacts to plugin

Posted by Russell Gold <ru...@gold-family.us>.
HI Richard,

What do you want to do? If all you want is the compile dependencies:

1. Configure the plugin to require compile and runtime dependency resolution:

@Mojo( ... requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME)

2. Specify a parameter configured to receive project.compileClassElements

  /**
   * Compile classpath of the maven project.
   */
  @Parameter(defaultValue = "${project.compileClasspathElements}")
  private List<String> projectCompileClasspathElements;

On Jul 12, 2013, at 12:45 PM, Richard Sand <rs...@idfconnect.com> wrote:

> Hi all - another hopefully simple question:
> 
> Can I add a custom configuration property to my plugin which takes in the
> normal <dependencies><dependency>......</ schema used in the build? E.g.
> instead of calling mavenProject.getArtifacts() to get a Set<Artifact> for
> the build, I'd have a @Property Set<Artifact> which maven will still resolve
> & manage but specifically for use by the plugin.
> 
> As a sample, this is what I want to put into the pom.xml:
> 
> <configuration>
> 	<includedArtifacts>
> 		<includedArtifact>
> 			<groupId>com.somegroup</groupId>
> 			<artifactId>someartifact</artifactId>
> 			<version>1.0.1</version>
> 		</includedArtifact>
> 	</includedArtifacts>
> 	........
> 
> And in the plugin code:
> 
> 	/**
> 	 * Other artifacts to include in obfuscation
> 	 */
> 	@Property 
> 	Set<Artifact> includedArtifacts
> 
> This doesn't work of course - Artifact cannot be instantiated... can someone
> give me some hints for which portions of the API can help achieve what I'm
> trying to accomplish?
> 
> Another option I have is to use a Set<String> and just enter the toString
> representation of an artifact, and then look through
> mavenProject.getArtifacts() to find a match. That just seems a hack to
> require two different formats for specifying artifacts, but if it's the only
> way, so be it.
> 
> Thanks for any input!
> 
> Richard Sand | CEO
> IDF Connect, Inc. 
> 2207 Concord Ave, #359
> Wilmington | Delaware 19803 | USA 
> Office: +1 302 425 0516 | Fax: +1 856 866 1899
> Mobile: +1 267 984 3651
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
> 

-----------------
Come read my webnovel, Take a Lemon <http://www.takealemon.com>, 
and listen to the Misfile radio play <http://www.gold-family.us/audio/misfile.html>!