为什么当我尝试使用Maven程序集插件时获得此错误消息?

问题描述 投票:5回答:3

我在Maven中是一个全新的人,我正在教程中学习它。

在本教程中,我具有以下pom.xml配置文件:

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.denofprogramming</groupId>
    <artifactId>maventutorial1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>MavenTutorial1</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.5</version>
                <configuration>
                    <descriptors>
                        <descriptor>jar-with-dependencies</descriptor>
                    </descriptors>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-math3</artifactId>
            <version>3.2</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

您可以在此配置文件中看到,已声明使用assembly插件,本节:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.5.5</version>
            <configuration>
                <descriptors>
                    <descriptor>jar-with-dependencies</descriptor>
                </descriptors>
            </configuration>
        </plugin>

作为descripor字段设置了值[[jar-with-dependencies),根据我的理解,该值必须创建一个新的目标jar文件,该文件还包含项目的delcared .jar依赖项。

因此,在Eclipse中,我选择了我的项目和

Run as

---> Maven Build并在Goal输入部分中写了这个陈述:clean package assembly:single
必须清理我的项目的目标目录,创建程序包,然后在

assembly

插件上调用single目标,该插件将jar依赖项放入我项目的最终jar目标文件中。问题是,通过这种方式,我在Eclipse控制台中获得了以下错误消息:

....................................................... ....................................................... ....................................................... Results : Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maventutorial1 --- [INFO] Building jar: /home/andrea/git/maven-java-console-application/mvntutorial1/target/maventutorial1-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- maven-assembly-plugin:2.5.5:single (default-cli) @ maventutorial1 --- [INFO] Reading assembly descriptor: jar-with-dependencies [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.767 s [INFO] Finished at: 2015-07-20T15:12:19+01:00 [INFO] Final Memory: 19M/155M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.5.5:single (default-cli) on project maventutorial1: Error reading assemblies: Error locating assembly descriptor: jar-with-dependencies [ERROR] [ERROR] [1] [INFO] Searching for file location: /home/andrea/git/maven-java-console-application/mvntutorial1/jar-with-dependencies [ERROR] [ERROR] [2] [INFO] File: /home/andrea/git/maven-java-console-application/mvntutorial1/jar-with-dependencies does not exist. [ERROR] [ERROR] [3] [INFO] File: /home/andrea/git/maven-java-console-application/mvntutorial1/jar-with-dependencies does not exist. [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

似乎无法找到此文件:

/ home / andrea / git / maven-java-console-application / mvntutorial1 / jar-with-dependencies

但是据我在教程中所了解的,这不是配置文件,而是特定的Maven值,它表示将所有.jar依赖项放入代表我打包项目的最终目标jar文件中。

为什么会出现此错误?我想念什么?我该如何解决?

java maven maven-3 maven-plugin maven-assembly-plugin
3个回答
6
投票
似乎您没有正确使用assembly插件。将插件条目更改为此:

<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.test.MainClassName</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <!-- packaging phase --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>

然后您只需执行:clean install。这将在target目录中创建具有依赖项的jar。您可以参考以下链接中给出的示例:https://maven.apache.org/plugins/maven-assembly-plugin/examples/sharing-descriptors.html

1
投票
所以这是我的Maven POM关于插件的外观。

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.16</version> <configuration> <testFailureIgnore>true</testFailureIgnore> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build>

我只能假设两件事:

    您可能没有正确设置其格式,或者您正在使用的Maven版本不支持您想要的操作。
  1. 您可能没有正确设置bash配置文件,并规定了maven目录的位置。另外,如果可能,请尝试通过apache网站上显示的终端/命令提示符设置Maven项目,并查看其是否有效。链接为:http://maven.apache.org/archetype/maven-archetype-plugin/examples/generate-batch.html
  • 例如:这是我用来为我的一个项目创建Maven原型的命令:

    mvn -B archetype:generate \-DarchetypeGroupId=org.apache.maven.archetypes \-DgroupId=com.weather.mobile.ios.automation.tenday \-DartifactId=IphoneTenDayAutomation

    groupID创建路径(像包一样思考),而artificatID是类的名称。 

  • 0
    投票
    我在Maven构建错误中遇到了类似的问题。我尝试了有关更新快照选项的复选框,并已修复。如果后台有旧版本的内容或诸如缓存之类的内容,这可能会有所帮助。
    © www.soinside.com 2019 - 2024. All rights reserved.