Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 2.0.8
-
Fix Version/s: 2.2.0, 3.0-alpha-3
-
Component/s: Plugins and Lifecycle
-
Labels:None
-
Number of attachments :
Description
According to Brian E. Fox there is something wrong with the Maven Core which causes the maven-dependency-plugin to fail if it is called by the mvn-eclipse-plugin. I can't tell any specifics since Brian looked into it, and only provided me a workaround. I'm pasting our dialog from the mailing list in here. Any further questions regarding this should be directed to Brian, since I am just a user and do not have the necessary insight.
----- snip mailinglist transscript starts here ----
No, this is a maven core bug and will probably have to be fixed in 2.1, but file an issue anyway.
----Original Message----
From: Michael Heß mhe@ordix.de
Sent: Thursday, February 14, 2008 12:57 AM
To: Maven Users List
Subject: RE: dependency:unpack vs. eclipse:eclipse
Thanks Brian, for finding this out.
I have created a workaround as suggested. Only additional thing I had to
do, was to also bind the resources:resources to process-resources phase,
because otherwise the filtering occured before the dependency:unpack. It's
dirty, but at least it works now.
Have you already taken care of filing a bug? If not, I would take care of
this. The bug is in the dependency-plugin, right?
bye, Michael
Brian E. Fox schrieb:
> I am able to reproduce this and it's an unfortunate bug in 2.0.x. The only
> workaround I can suggest is to change the dependency plugin binding to a
> later phase than is invoked by the eclipse plugin. According to [1] the
> phase is generate-resources so you can bump it to process-resources.
>
> [1]:
> http://maven.apache.org/plugins/maven-eclipse-plugin/eclipse-mojo.html
>
> ----Original Message----
> From: Michael Heß mhe@ordix.de![]()
> Sent: Wednesday, February 13, 2008 1:07 AM
> To: Maven Users List
> Subject: RE: dependency:unpack vs. eclipse:eclipse
>
> Sure,
>
> here you go, I hope it somehow survives the transfer to the list. If it's
> completely garbled I can also send you the file directly as an attachment.
>
> Furthermore I'd like to add the error I'm getting when binding the
> dependendy-plugin unpack goal to a specific phase:
>
> ---- ERROR -----
> [INFO] One or more required plugin parameters are invalid/missing for
> 'dependency:unpack'
>
> [0] Inside the definition for plugin 'maven-dependency-plugin' specify the
> following:
>
> <configuration>
> ...
> <artifactItems>VALUE</artifactItems>
> </configuration>.
> ---- ERROR -----
>
> But as you can see in the pom below, I do have the wanted configuration
> settings. Thanks for looking into this.
>
> bye, Michael
>
> --pom starts here--
>
> <?xml version="1.0" encoding="UTF-8"?>
> <project xmlns="http://maven.apache.org/POM/4.0.0"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/maven-v4_0_0.xsd">
> <parent>
> <artifactId>abc</artifactId>
> <groupId>de.customer</groupId>
> <version>1.0.0-SNAPSHOT</version>
> </parent>
> <modelVersion>4.0.0</modelVersion>
> <groupId>de.customer.abc</groupId>
> <artifactId>product-config</artifactId>
> <packaging>jar</packaging>
> <version>$
</version>
> <name>product-config</name>
> <dependencies>
> <dependency>
> <groupId>de.customer.abc.common</groupId>
> <artifactId>abc-basis-config</artifactId>
> <version>$
> <scope>compile</scope>
> </dependency>
> </dependencies>
> <profiles>
> <profile>
> <id>local</id>
> <activation>
> <property>
> <name>local</name>
> </property>
> </activation>
> <build />
> <properties>
> <maven.test.skip>true</maven.test.skip>
> <mvn.filter.file>
> ${basedir}/src/main/filters/local.properties
> </mvn.filter.file>
> </properties>
> </profile>
> <!--other profiles here as well - intentionally left them out -->
> </profiles>
> <build>
> <filters>
> <filter>${mvn.filter.file}</filter>
> </filters>
> <resources>
> <resource>
> <directory>src/main/resources</directory>
> <filtering>true</filtering>
> </resource>
> <resource>
> <directory>target/work/conf</directory>
> <!-- copies the contents of "conf" to "target/conf" -->
> <targetPath>../conf</targetPath>
> <filtering>true</filtering>
> </resource>
> </resources>
>
> <plugins>
> <!-- Java 1.5 -->
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-compiler-plugin</artifactId>
> <configuration>
> <source>1.5</source>
> <target>1.5</target>
> </configuration>
> </plugin>
>
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-dependency-plugin</artifactId>
> <version>2.0</version>
> <inherited>false</inherited>
> <configuration>
> <artifactItems>
> <artifactItem>
> <groupId>de.customer.abc.common</groupId>
> <artifactId>abc-basis-config</artifactId>
> <version>${abc.common.version}
</version>
> <type>jar</type>
> <outputDirectory>
> $
> </outputDirectory>
> </artifactItem>
> </artifactItems>
> <excludes>
> <exclude>META-INF/**</exclude>
> </excludes>
> </configuration>
> <!-- if I put this in, no more eclipse:eclipse
> <executions>
> <execution>
> <id>get-config</id>
> <phase>generate-resources</phase>
> <goals>
> <goal>unpack</goal>
> </goals>
> <configuration>
> <artifactItems>
> <artifactItem>
> <groupId>de.customer.abc.common</groupId>
> <artifactId>abc-basis-config</artifactId>
> <version>${abc.common.version}</version>
> <type>jar</type>
> <outputDirectory>
> ${project.build.directory}
/work
> </outputDirectory>
> </artifactItem>
> </artifactItems>
> <excludes>
> <exclude>META-INF/**</exclude>
> </excludes>
> </configuration>
> </execution>
> </executions>
> -->
> </plugin>
> <plugin>
> <artifactId>maven-assembly-plugin</artifactId>
> <executions>
> <execution>
> <id>conf</id>
> <phase>package</phase>
> <goals>
> <goal>attached</goal>
> </goals>
> <configuration>
> <outputDirectory>
> $
> </outputDirectory>
> <appendAssemblyId>true</appendAssemblyId>
> <descriptors>
> <descriptor>
> src/main/assembly/conf.xml
> </descriptor>
> </descriptors>
> </configuration>
> </execution>
> </executions>
> </plugin>
> </plugins>
> </build>
> </project>
>
>
>
> Brian E. Fox schrieb:
>> The faq entry about the executions/non executions would only apply when
>> running dependency:unpack directly...it shouldn't have any issues with
>> eclipse:eclipse. (although I haven't tested it recently).
>>
>> Can you paste your pom so I can look at it?
>>
>> ----Original Message----
>> From: Michael Heß mhe@ordix.de![]()
>> Sent: Tuesday, February 12, 2008 10:34 AM
>> To: users@maven.apache.org
>> Subject: dependency:unpack vs. eclipse:eclipse
>>
>> Hi list,
>>
>> I've been searching and fiddling around all day, with no success so far.
>> So this is my only hope of finding an answer.
>>
>> My basic setup looks like the following:
>>
>> I have an artifact which creates a ZIP-assembly. Lets call it
>> artifact-resources.zip
>>
>> Furthermore I have anotherArtifact which depends on
>> artifact-resources.zip. As the name states, the artifact does not
>> contain
>> any sources, but resources. These resources I want to have unpacked and
>> filtered during anotherArtifacts build. So what I did, was to add a
>> dependency-plugin-configuration to anotherArtifacts pom.xml, and I bound
>> it to the generate-resources phase. At that point everything was still
>> fine. My build went all the way through, the resources got unpacked and
>> filtered, and were used correctly afterwards as the build lifecycle went
>> on.
>>
>> Then I wanted to use maven-eclipse-plugin on anotherArtifact. At that
>> point, I ran into the problem, that dependency:unpack fails, because
>> eclipse:eclipse seems to trigger it in the "CLI" way. Although I do not
>> really know what it maven internally means, I did as I was told in the
>> maven-dependency-plugin faq, and removed my execution entries out of the
>> configuration. This fixed the eclipse:eclipse problem.
>>
>> But, now this again leads to the following problems:
>> Since my maven-dependency-plugin configuration is no longer bound to any
>> specific phase it should run during process-sources. At least the
>> plugins
>> documentation says so. But it does not, I don't know why.
>>
>> So, right now my conclusion for today is (and I really do hope someone
>> can
>> prove me wrong):
>>
>> Either - I can have dependency:unpack attached to a specific phase
>> OR - I can have eclipse:eclipse working
>>
>> As stated before. I spent the whole afternoon trying things out.
>> Although
>> I probably learned a lot, I'm desperate for help. I really do not have
>> any
>> more ideas what to do.
>>
>> Thanks for reading all this, and maybe providing any insight.
>>
>> bye, Michael
Issue Links
- is duplicated by
-
MNG-3425
Required parameters of self written Mojo configured in execution part of POM are ignored and causing error
-
-
MNG-3824
The default plugin execution should be configurable through a plugin execution config.
-
- is related to
-
MNG-3203
maven should execute compiler:compile and :test-compile in separate executions, to allow separate configuration
-
- supercedes
-
MNG-4058
Support for Default Executions
-
Activity
| Field | Original Value | New Value |
|---|---|---|
| Summary | Maven Dependency Plugin vs Eclipse Plugin Errors caused by MVN Core | Plugin parameters must be specified outside an execution block when they are invoked from the command line |
| Fix Version/s | 2.0.x [ 13141 ] |
| Fix Version/s | 2.1 [ 13142 ] | |
| Fix Version/s | 2.0.x [ 13141 ] |
| Attachment | maven-core-MojoExectution-r712253.patch [ 37982 ] |
| Fix Version/s | 3.x [ 13145 ] | |
| Fix Version/s | 3.0 [ 13142 ] |
| Fix Version/s | 3.x [ 13145 ] | |
| Resolution | Fixed [ 1 ] | |
| Status | Open [ 1 ] | Closed [ 6 ] |
| Assignee | John Casey [ jdcasey ] | |
| Fix Version/s | 2.2.0 [ 15103 ] |
| Fix Version/s | 3.0-alpha-3 [ 14719 ] |
The problem is that when plugins are invoked from the command line (or bound directly to the default lifecycle), they don't execute with an execution id. This means that the configuration of that plugin must be done outside the <executions> block. This is confusing for the user, but also doesn't allow much flexibility. If you want to support a plugin being run from the command line and bound to the pom, your configuration will be in the default section and thus inherited by all executions. This usually is not what you want.
Any of these default executions should actually use an execution and we could probably do something simple like use "default" as the execution name.