Hey,

thanks a lot! That solved my problems!

Mit freundlichen Grüßen / Best regards

Jan Engler
Central Research & Development

SICK AG
Erwin-Sick-Str. 1
79183 Waldkirch, Germany

Phone +49 7681 202-3214
mailto:jan.eng...@sick.de
http://www.sick.com





Von:    Thomas Broyer <t.bro...@gmail.com>
An:     Maven Users List <users@maven.apache.org>
Datum:  18.03.2013 14:28
Betreff:        Re: Re: Custom Maven Plugin



Try project.getCompileClasspathElements(), it resolves transitive
dependencies and gives you their location as absolute file names.

http://maven.apache.org/ref/3.0.5/maven-core/apidocs/org/apache/maven/project/MavenProject.html#getCompileClasspathElements()


On Mon, Mar 18, 2013 at 2:22 PM, Jan Engler <jan.eng...@sick.de> wrote:
> Ok,
>
> I am adapting the jni4net maven plugin  (see
> https://code.google.com/p/jni4net/) to fit our needs. In short, this
> plugin collects a set of classes with the intention to generate .net
> wrapper for. Furthermore, the tool that create those wrappers
> (proxygen.exe) needs the complete dependecies as 'classpath' argument. 
It
> works so far, but beneath the direct dependencies of the maven project 
my
> plugin is running on, I also need the transitive dependencies. All the
> information about that is passed to the proxygen.exe using an xml 
file...
> In the case of a dependency that is described by a workspace resolution 
I
> would like to pass a jar....
> I tried your hint with  @requiresDependencyResolution compile  but that
> didn't work. Here is a snippet of my code:
>
> /**
>  * @requiresDependencyResolution compile
>  * @goal proxygen
>  *
>  * @phase process-sources
>  */
> public class ProxygenMojo extends AbstractMojo {
>         /**
>          * @parameter expression="${proxygen.exe}"
>          * @required
>          */
>         private File exe;
>
>         /** @parameter expression="${proxygen.xml}" default-
> value="proxygen.xml" */
>         private File xml;
>         /** @parameter expression="${proxygen.bin}" default-
> value="target/classes" */
>         private String bin;
>
>         /**
>          * @parameter
>          */
>         private List<String> artifacts;
>         /**
>          * @parameter
>          */
>         private List<String> classes;
>
>         /**
>          * @parameter expression="${proxygen.targetDirJvm}"
>          *            default-value="<TargetDirJvm>java</TargetDirJvm>"
>          */
>         String targetDirJvm;
>
>         /**
>          * @parameter expression="${proxygen.targetDirClr}"
>          * default-value="<TargetDirClr>csharp</TargetDirClr>"
>          */
>         String targetDirClr;
>
>         /** @parameter default-value="${project}" */
>         MavenProject project;
>
>         @SuppressWarnings("unchecked")
>         public void execute() throws MojoExecutionException {
>                 if (artifacts == null)
>                         artifacts = Collections.emptyList();
>
>                 getLog().info("exe = " + exe.getPath());
>
>                 String jarPath;
>                 ArrayList<String> classPathList = null;
>                 ArrayList<String> classList = null;
>
>                 Set<Artifact> artifactSet = project
> .getDependencyArtifacts();
>                 project.getDependencies();
>                 for (Artifact artifact : artifactSet) {
>                         try {
>                                 JarFile depFile = new
> JarFile(artifact.getFile());
>                                 if (classPathList == null) {
>                                         classPathList = new
> ArrayList<String>();
>                                 }
>                                 classPathList.add(depFile.getName());
>                         } catch (IOException e1) {
>
>                                 e1.printStackTrace();
>                         }
>                         jarPath = null;
>
>                         getLog().info("artifact " +
> artifact.getFile().getPath());
>                 }
>
>                 StringBuilder xmlBuilder = new StringBuilder(
>                                 "<?xml version=\"1.0\" 
encoding=\"utf-8\"
> ?>");
>                 xmlBuilder
>                                 .append("\n<jni4net-proxygen xmlns=\"
> http://jni4net.sf.net/0.8.0.0/toolConfig.xsd\";>\n");
> xmlBuilder.append("\n<TargetDirJvm>").append(targetDirJvm)
>                                 .append("</TargetDirJvm>");
> xmlBuilder.append("\n<TargetDirClr>").append(targetDirClr)
>                                 .append("</TargetDirClr>\n");
>
>                 if (classPathList == null) {
>                         getLog().warn("no artifacts found");
>                 } else {
>                         for (String artifact : classPathList) {
>                                 xmlBuilder.append("\n<ClassPath Path=\"" 
+
> artifact + "\"/>");
>                         }
>                         xmlBuilder.append("\n<ClassPath Path=\"" + bin +
> "\"/>");
>                         xmlBuilder.append('\n');
>                 }
>                 for (String clazzAsString : classes) {
>                         if (classList == null) {
>                                 classList = new ArrayList<String>();
>                         }
>                         classList.add(clazzAsString);
>                 }
>                 if (classList == null) {
>                         getLog().warn("no classes found");
>                 } else {
>                         for (String className : classList) {
>                                 xmlBuilder.append("\n<JavaClass
> TypeName=\"" + className
>                                                 + "\"/>");
>                         }
>                 }
>                 xmlBuilder.append("\n\n</jni4net-proxygen>\n");
>
>
> Any ideas?
>
> Mit freundlichen Grüßen / Best regards
>
> Jan Engler
> Central Research & Development
>
> SICK AG
> Erwin-Sick-Str. 1
> 79183 Waldkirch, Germany
>
> Phone +49 7681 202-3214
> mailto:jan.eng...@sick.de
> http://www.sick.com
>
>
>
>
>
> Von:    Stephen Connolly <stephen.alan.conno...@gmail.com>
> An:     Maven Users List <users@maven.apache.org>
> Datum:  18.03.2013 14:05
> Betreff:        Re: Custom Maven Plugin
>
>
>
> I would start by describing what you want to do and why. That way we can
> determine if you approach fits best with "the maven way" and suggest the
> best way to align with that... There are some alarm bells ringing
>
> On Monday, 18 March 2013, Jan Engler wrote:
>
>> Hi,
>>
>> I am writing my first custom plugin for maven.
>> I`m now facing 2 problem.
>> - I need to know the absolute location of every dependency (incl.
>> transitive deps)
>
> You need @requiresDependencyResolution in the java doc annotations or 
the
> equivalent (on a phone so cannot look up) for java 1.5 annotations
>
>
>> - Is there a solution for workspace dependencies (i would like to have 
a
>> "jar" of them as well) like "disable workspace resolution" as a method
>> call in the plugin?
>
>
> Here is the alarm bell FYI
>
>>
>> Thx in advance!
>>  Jan
>>
>> Mit freundlichen Grüßen / Best regards
>>
>> Jan Engler
>> Central Research & Development
>>
>> SICK AG
>> Erwin-Sick-Str. 1
>> 79183 Waldkirch, Germany
>>
>> Phone +49 7681 202-3214
>> mailto:jan.eng...@sick.de <javascript:;>
>> http://www.sick.com
>>
>>
>>
>> SICK AG - Sitz: Waldkirch i. Br. - Handelsregister: Freiburg i. Br. HRB
>> 280355
>> Vorstand: Dr. Robert Bauer (Vorsitzender)  -  Reinhard Bösl  -  Dr.
> Martin
>> Krämer  -  Markus Paschmann  -  Markus Vatter
>> Aufsichtsrat: Gisela Sick (Ehrenvorsitzende) - Klaus M. Bukenberger
>> (Vorsitzender)
>>
>
>
> --
> Sent from my phone
>
>
>
> SICK AG - Sitz: Waldkirch i. Br. - Handelsregister: Freiburg i. Br. HRB
> 280355
> Vorstand: Dr. Robert Bauer (Vorsitzender)  -  Reinhard Bösl  -  Dr. 
Martin
> Krämer  -  Markus Paschmann  -  Markus Vatter
> Aufsichtsrat: Gisela Sick (Ehrenvorsitzende) - Klaus M. Bukenberger
> (Vorsitzender)



--
Thomas Broyer
/tɔ.ma.bʁwa.je/

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


 
 
SICK AG - Sitz: Waldkirch i. Br. - Handelsregister: Freiburg i. Br. HRB 
280355 
Vorstand: Dr. Robert Bauer (Vorsitzender)  -  Reinhard Bösl  -  Dr. Martin 
Krämer  -  Markus Paschmann  -  Markus Vatter 
Aufsichtsrat: Gisela Sick (Ehrenvorsitzende) - Klaus M. Bukenberger 
(Vorsitzender) 

Reply via email to