首页 文章

如何解决Maven中的未知工件类型[test-jar]错误?

提问于
浏览
3

尝试使用Maven构建耳朵时出现此错误 .

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-ear-plugin:2.4.2:generate-application-xml (default-generate-application-xml) on project cargooceanear: Failed to initialize ear modules: Unknown artifact type[tes
t-jar] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-ear-plugin:2.4.2:generate-application-xml (default-generate-application-xml) on project cargooceanear: Failed to i
nitialize ear modules
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to initialize ear modules
        at org.apache.maven.plugin.ear.AbstractEarMojo.execute(AbstractEarMojo.java:240)
        at org.apache.maven.plugin.ear.GenerateApplicationXmlMojo.execute(GenerateApplicationXmlMojo.java:85)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        ... 19 more
Caused by: org.apache.maven.plugin.ear.UnknownArtifactTypeException: Unknown artifact type[test-jar]
        at org.apache.maven.plugin.ear.util.ArtifactTypeMappingService.getStandardType(ArtifactTypeMappingService.java:151)
        at org.apache.maven.plugin.ear.EarModuleFactory.newEarModule(EarModuleFactory.java:74)
        at org.apache.maven.plugin.ear.AbstractEarMojo.execute(AbstractEarMojo.java:230)
        ... 22 more

2 回答

  • 2

    基本上,此错误是由于“test-jar”类型的依赖关系或传递依赖关系造成的 .

    例如

    <dependency>
        <groupId>org.apache.jackrabbit</groupId>
        <artifactId>jackrabbit-data</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
    </dependency>
    

    Option A: If "test-jar" is found in a dependency in the pom.xml 然后将"test-jar"目标添加到maven-jar-plugin .

    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>2.4</version>
       <configuration>
          .............
       </configuration>
       <executions>
         <execution>
           <goals>
             <goal>test-jar</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    

    Option B: If "test-jar" is found in a transitive dependency 然后必须在pom.xml中将其排除以修复此错误 .

    <dependency>
        <groupId>mygroup</groupId>
        <artifactId>myartifact</artifactId>
        <version>${myartifact-release-version}</version>
        <type>ejb</type>
         <exclusions>
            <exclusion>
               <groupId>org.apache.jackrabbit</groupId>
               <artifactId>jackrabbit-data</artifactId>
            </exclusion>
         </exclusions>                
     </dependency>
    
  • 2

    问题:maven-ear-plugin给出错误“[INFO]初始化耳模块失败嵌入错误:未知工件类型[zip]”

    cause:传递依赖项中的zip或不支持的文件

    解决方案:在Windows中,首先打开cmd,cd项目的根目录,然后在cmd中键入“mvn dependency:tree”,找到与marven-ear-plugin冲突的传递依赖项 .

    例如unknown zip - com.sun.xml.ws:samples:zip:2.2.10:compile表示

    <groupId>com.sun.xml.ws</groupId>
    <artifactId>samples</artifactId>
    

    例如改变耳朵:将排除在你的依赖中

    <dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-ri</artifactId>
    ... 
    <exclusions>
    <exclusion>     
    <groupId>com.sun.xml.ws</groupId>       
    <artifactId>samples</artifactId>          
    </exclusion>          
    ... 
    </exclusions>
    </dependency>
    

    相同的 - com.sun.xml.ws:release-documentation:zip

相关问题