You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Gary Weaver <ga...@duke.edu> on 2007/10/29 16:58:17 UTC

Problem accessing dependency resource via reflection in maven 2 plugin

Hello,

(I apologize in advance if this issue was addressed already. Jira ticket 
at: http://jira.codehaus.org/browse/MNG-3262 which contains the source 
and pom of the plugin and project that uses the plugin)

Wondering if anyone can spot anything stupid I'm doing here...

I've written a Maven 2 mojo that is having trouble instantiating (via 
reflection) a properties resource of dependency that is included as a 
"compile"-scope dependency in the project (pom.xml) that is utilizing my 
plugin.

(Even though I need the plugin to access a dependency that is in 
"provided" scope, for now I'm using compile scope since the maven 
documentation states that @requiresDependencyResolution doesn't support 
provided scope.)

Here are the details:

1) I have the following dependency:

---start---
    <dependencies>
        <dependency>
            <groupId>com.atlassian.confluence</groupId>
            <artifactId>confluence</artifactId>
            <version>2.6.0</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
---end---

2) In the pom.xml of the project that utilizes my plugin, the mojo of 
the plugin I wrote is configured with the execution:

---start---
                    <execution>
                        <id>get_ConfluenceActionSupport.properties</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>extractProperties</goal>
                        </goals>
                        <configuration>
                            
<fullyQualifiedProperties>com.atlassian.confluence.core.ConfluenceActionSupport.properties</fullyQualifiedProperties>
                            
<outputFile>target/classes/com/atlassian/confluence/core/ConfluenceActionSupport.properties</outputFile>
                        </configuration>
                    </execution>
---end---

3) In the Maven 2 mojo it calls the following code (just copied/pasted 
the relevant portion):

---start---
        // load properties with reflection and save to file
        InputStream in = null;
        OutputStream out = null;

        boolean foundFile = false;
        try {
            String resource = cleanResourceName(fullyQualifiedProperties);
            System.out.println("Getting " + resource);
            in = getClass().getResourceAsStream (resource);
            if (in != null)
            {
                Properties result = new Properties();
                result.load (in); // Can throw IOException
                out = new BufferedOutputStream(new 
FileOutputStream(outputPathname));
                result.store(out, "");
                foundFile = true;
            }
        }
---end---

When executed, it can't find the properties file in the classloader. As 
you can see from the following output, I'm putting the resource string 
together correctly as 
"/com/atlassian/confluence/core/ConfluenceActionSupport.properties" 
which if you interrogate the above confluence dependency, you should be 
able to find.

---start---
[INFO] [i18nsanity-pt:extractProperties {execution: 
get_ConfluenceActionSupport.properties}]
[INFO] Extracting properties file from classpath... 
fullyQualifiedProperties=com.atlassian.confluence.core.ConfluenceActionSupport.properties 
outputFile=/usr/svn/community/confluence/plugins/americanenglishlanguagepack/trunk/target/classes/com/atlassian/confluence/core/ConfluenceActionSupport.properties
Getting /com/atlassian/confluence/core/ConfluenceActionSupport.properties
[INFO] 
------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] 
------------------------------------------------------------------------
[INFO] Failed properties extraction!

Embedded error: Could not find properties file on classpath: 
com.atlassian.confluence.core.ConfluenceActionSupport.properties
---end---


Thanks!

-- 
Gary Weaver
Internet Framework Services
Office of Information Technology
Duke University


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