You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Matthias Koester <ma...@numberfour.eu> on 2011/07/11 15:02:02 UTC

Problems with register new archive type

Hi,

I'm currently using maven 3.0.3 and have created a maven plugin for our
compiler, which produces an zip artifact with extension 'nfar'. This
artifact is our main artifact and gets installed into our repository. Now we
have another project that needs to unpack all dependencies with the
maven-dependency-plugin:2.2. This fails and maven/plexus complains an
unknown archive type 'nfar'. So I tried to add an unarchiver component by
adding the following lines to our plugin component.xml:

<component>

  <role>org.codehaus.plexus.archiver.UnArchiver</role>

  <role-hint>nfar</role-hint>

  <implementation>n4.compiler.maven.plugin.archiver.NfarUnArchiver</
implementation>

  <instantiation-strategy>per-lookup</instantiation-strategy>

</component>


This then fails with the following error:

[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-dependency-plugin:2.2:unpack-dependencies
(unpack-dependencies) on project web: A type incompatibility occured while
executing
org.apache.maven.plugins:maven-dependency-plugin:2.2:unpack-dependencies:
n4.compiler.maven.plugin.archiver.NfarUnArchiver cannot be cast to
org.codehaus.plexus.archiver.UnArchiver

[ERROR] -----------------------------------------------------

[ERROR] realm =
 plugin>org.apache.maven.plugins:maven-dependency-plugin:2.2

[ERROR] strategy =
org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy

[ERROR] urls[0] =
file:/Users/matthias/.m2/repository/org/apache/maven/plugins/maven-dependency-plugin/2.2/maven-dependency-plugin-2.2.jar

[ERROR] urls[1] =
file:/Users/matthias/.m2/repository/commons-cli/commons-cli/1.0/commons-cli-1.0.jar

[ERROR] urls[2] =
file:/Users/matthias/.m2/repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar

[ERROR] urls[3] =
file:/Users/matthias/.m2/repository/org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.jar

[ERROR] urls[4] =
file:/Users/matthias/.m2/repository/org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.jar

[ERROR] urls[5] =
file:/Users/matthias/.m2/repository/org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar

[ERROR] urls[6] =
file:/Users/matthias/.m2/repository/org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar

[ERROR] urls[7] =
file:/Users/matthias/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar

[ERROR] urls[8] =
file:/Users/matthias/.m2/repository/commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar

[ERROR] urls[9] =
file:/Users/matthias/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar

[ERROR] urls[10] =
file:/Users/matthias/.m2/repository/commons-digester/commons-digester/1.6/commons-digester-1.6.jar

[ERROR] urls[11] =
file:/Users/matthias/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar

[ERROR] urls[12] =
file:/Users/matthias/.m2/repository/oro/oro/2.0.8/oro-2.0.8.jar

[ERROR] urls[13] =
file:/Users/matthias/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar

[ERROR] urls[14] =
file:/Users/matthias/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.jar

[ERROR] urls[15] =
file:/Users/matthias/.m2/repository/org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar

[ERROR] urls[16] =
file:/Users/matthias/.m2/repository/org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar

[ERROR] urls[17] =
file:/Users/matthias/.m2/repository/org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar

[ERROR] urls[18] =
file:/Users/matthias/.m2/repository/org/apache/velocity/velocity/1.5/velocity-1.5.jar

[ERROR] urls[19] =
file:/Users/matthias/.m2/repository/org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar

[ERROR] urls[20] =
file:/Users/matthias/.m2/repository/org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar

[ERROR] urls[21] =
file:/Users/matthias/.m2/repository/org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar

[ERROR] urls[22] =
file:/Users/matthias/.m2/repository/org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar

[ERROR] urls[23] =
file:/Users/matthias/.m2/repository/org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar

[ERROR] urls[24] =
file:/Users/matthias/.m2/repository/org/codehaus/plexus/plexus-archiver/1.0-alpha-12/plexus-archiver-1.0-alpha-12.jar

[ERROR] urls[25] =
file:/Users/matthias/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.jar

[ERROR] urls[26] =
file:/Users/matthias/.m2/repository/org/apache/maven/shared/file-management/1.1/file-management-1.1.jar

[ERROR] urls[27] =
file:/Users/matthias/.m2/repository/org/apache/maven/shared/maven-shared-io/1.0/maven-shared-io-1.0.jar

[ERROR] urls[28] =
file:/Users/matthias/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar

[ERROR] urls[29] =
file:/Users/matthias/.m2/repository/org/codehaus/plexus/plexus-io/1.0-alpha-5/plexus-io-1.0-alpha-5.jar

[ERROR] urls[30] =
file:/Users/matthias/.m2/repository/org/apache/maven/shared/maven-dependency-analyzer/1.2/maven-dependency-analyzer-1.2.jar

[ERROR] urls[31] =
file:/Users/matthias/.m2/repository/asm/asm/3.0/asm-3.0.jar

[ERROR] urls[32] =
file:/Users/matthias/.m2/repository/org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.jar

[ERROR] urls[33] =
file:/Users/matthias/.m2/repository/org/apache/maven/shared/maven-common-artifact-filters/1.2/maven-common-artifact-filters-1.2.jar

[ERROR] urls[34] =
file:/Users/matthias/.m2/repository/org/apache/maven/shared/maven-plugin-testing-harness/1.1/maven-plugin-testing-harness-1.1.jar

[ERROR] urls[35] =
file:/Users/matthias/.m2/repository/org/apache/maven/shared/maven-invoker/2.0.7/maven-invoker-2.0.7.jar

[ERROR] urls[36] =
file:/Users/matthias/.m2/repository/commons-collections/commons-collections/3.2/commons-collections-3.2.jar

[ERROR] urls[37] =
file:/Users/matthias/.m2/repository/commons-lang/commons-lang/2.1/commons-lang-2.1.jar

[ERROR] Number of foreign imports: 1

[ERROR] import: Entry[import  from realm
ClassRealm[project>eu.numberfour:web:0.21.0-SNAPSHOT, parent:
ClassRealm[maven.api, parent: null]]]


My own class simply extends org.codehaus.plexus.archiver.zip.ZipUnArchiver
and it seems to use the same - also a bit odd - version 1.0-alpha-12
of plexus-archiver
that is used by the maven-dependency-plugin:2.2.

I know that maven is using own classloaders, but currently I just don't know
how to fix this problem.


Any hint is welcome.


Cheers,

Matthias