[
https://issues.apache.org/jira/browse/MJAR-177?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Karl Heinz Marbaise closed MJAR-177.
------------------------------------
Resolution: Fixed
Assignee: Karl Heinz Marbaise
Fixed in [r1720830|http://svn.apache.org/r1720830]
> Empty string should be treated as default classifier
> ----------------------------------------------------
>
> Key: MJAR-177
> URL: https://issues.apache.org/jira/browse/MJAR-177
> Project: Maven JAR Plugin
> Issue Type: Bug
> Affects Versions: 2.4
> Environment: $ mvn -version
> Apache Maven 3.0.4
> Maven home: /usr/share/maven
> Java version: 1.7.0_55, vendor: Oracle Corporation
> Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
> Default locale: en_US, platform encoding: UTF-8
> OS name: "linux", version: "3.11.0-14-generic", arch: "amd64", family: "unix"
> Reporter: Stefan Fussenegger
> Assignee: Karl Heinz Marbaise
> Fix For: 3.0.0
>
>
> I'm not an expert for Maven internals, but there seem to be subtle
> differences regarding empty properties. Sometimes they are set to null and
> sometimes they remain an empty string (""). The later causes an error when
> used as classifier
> This seems to be the problematic code from AbstratJarMojo.java:
> {code:java}
> String classifier = getClassifier();
> if ( classifier != null ) // ERROR check for empty string
> {
> projectHelper.attachArtifact( getProject(), getType(), classifier,
> jarFile );
> }
> else
> {
> getProject().getArtifact().setFile( jarFile );
> }
> {code}
> The resulting error is
> {code}
> [ERROR] Failed to execute goal
> org.apache.maven.plugins:maven-jar-plugin:2.4:jar (default-jar) on project
> sample-project: Execution default-jar of goal
> org.apache.maven.plugins:maven-jar-plugin:2.4:jar failed: For artifact
> {org.example:sample-project:1.0.0-SNAPSHOT:jar}: An attached artifact must
> have a different ID than its corresponding main artifact. -> [Help 1]
> {code}
> It's not easy to set a property to "" though as properties from XML will
> typically resolve to null but some plugins do. For example, it's possible to
> use gmaven-plugin to achieve this:
> {code:xml}
> <plugin>
> <groupId>org.codehaus.gmaven</groupId>
> <artifactId>gmaven-plugin</artifactId>
> <executions>
> <execution>
> <id>artifact-classifier</id>
> <phase>initialize</phase>
> <goals>
> <goal>execute</goal>
> </goals>
> <configuration>
> <source>
> project.properties['artifact.classifier'] = "";
> </source>
> </configuration>
> </execution>
> </executions>
> </plugin>
> <plugin>
> <artifactId>maven-jar-plugin</artifactId>
> <version>${maven-jar-plugin.version}</version>
> <inherited>true</inherited>
> <configuration>
> <classifier>${artifact.classifier}</classifier>
> </configuration>
> </plugin>
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)