[
http://jira.codehaus.org/browse/MNG-2795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_87195
]
Fabrice BELLINGARD commented on MNG-2795:
-----------------------------------------
OK, I have isolated the problem. Here it is.
I have a project "Checkstyle-config" that creates a JAR which contains a
Checkstyle configuration file (called "MyConventions.xml"). I have another
project "TestProject" that references this JAR in the build extensions and that
configures the checkstyle plugin to use "MyConventions.xml" as the config file.
Build the "Checkstyle-config" project with "mvn install", then run "mvn
checkstyle:checkstyle" on the "TestProject" Java project. Everything works fine.
Now, imagine that you develop custom Checks that you bundle in the
"Checkstyle-config" JAR along with the configuration file. To be able to do so,
you need to define, in that project, some dependencies (Checkstyle API
dependency).
Rebuild the "Checkstyle-config" project with "mvn install" (you will get a JAR
containing "MyConventions.xml" and the custom checks binaries). Then run "mvn
checkstyle:checkstyle" on the "TestProject" Java project. With Maven 2.0.4,
there's no error, but with 2.0.5, the build fails and the log says:
{code}
Embedded error: Unable to find configuration file location.
Unable to find location 'MyConventions.xml' as URL, File or Resource.
{code}
I will attach the projects I've described so that you can try to reproduce it.
You just need to comment/uncomment the dependencies to see the build fail or
not.
HTH
> Classloader problem loading a resource from a build extension Jar :
> difference between 2.0.4 and (future) 2.0.5
> ---------------------------------------------------------------------------------------------------------------
>
> Key: MNG-2795
> URL: http://jira.codehaus.org/browse/MNG-2795
> Project: Maven 2
> Issue Type: Bug
> Affects Versions: 2.0.5
> Reporter: Fabrice BELLINGARD
> Fix For: 2.0.5
>
> Attachments: Checkstyle-2.0.4.txt, Checkstyle-2.0.5.txt
>
>
> I had a problem when executing the Checkstyle plugin (version 2.1) with the
> pre-release of Maven 2.0.5. So I dug a bit to see if this could be related to
> maven core or not, and here is what I found.
> I isolated the code that breaks the build in the checkstyle plugin: it
> happens when the plugin tries to load my Checkstyle configuration file, which
> is actually located in a JAR that is specified in the build extensions. The
> code lies in the Locator#resolveLocation() method:
> // Attempt a Resource.
> URL url = this.getClass().getClassLoader().getResource(
> location );
> This code returns null for the "url" variable, which in turns breaks the
> plugin because it doesn't find any configuration file.
> I haven't had the time to dig more into it, but I found the following issue
> that might be related to this problem: "MNG-2228 : Classloader problem
> loading jars from build extensions". Brett and Carlos worked on it and fixed
> it, so maybe they could tell more about it.
> I attached the logs of the execution with Maven 2.0.4 (which works fine) and
> Maven 2.0.5 (which breaks). I haven't had the time yet to dig further into
> that problem.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira