【问题标题】:Problems with Maven [duplicate]Maven的问题[重复]
【发布时间】:2014-12-16 10:01:12
【问题描述】:

当我想在我的项目中运行“mvn deploy”时出现以下错误:

[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ JImp ---
[INFO] Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.jar
[INFO] Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.jar (245 KB at 188.8 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.973 s
[INFO] Finished at: 2014-12-16T10:35:39+01:00
[INFO] Final Memory: 24M/226M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project JImp: Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter -> [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

我的 POM 文件如下所示:

<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>JImp</groupId>
    <artifactId>JImp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            ....
        </dependency>
    </dependencies>
</project>

在我的项目中,我使用了一堆 jar 文件(如 SWT、Log4j 等,还有自己的库)。但是所有这些都添加到我的本地存储库(我自己的库,我通过 mvn install:install-file ..添加)和我的 POM 的依赖项中。在 Eclipse 中,我的项目“知道”所有导入,代码看起来很好,没有错误或类似的东西..

如果我只跑

mvn package

然后执行我的jar

java -cp target\JImp-0.0.1-SNAPSHOT.jar de.my.path.JImp

他抛出 ClassNotFoundException 因为他找不到我自己的库的类。但是这个库被添加到本地存储库和我的 POM 文件中的依赖关系中。:/

也许你能帮我..!!

非常感谢您的帮助!

【问题讨论】:

    标签: java maven


    【解决方案1】:

    mvn deploy 问题

    您需要在 pom.xml 中提供要在其中部署工件的存储库地址,如下所示

    <distributionManagement>
      <repository>
        <id>mycompany-repository</id>
        <name>MyCompany Repository</name>
        <url>your repository url</url>
      </repository>
    </distributionManagement>
    

    要运行 maven artifact jar,你需要使用mvn exec 命令,然后它只在你的类路径中包含 pom.xml 中提到的所有 jars。请参阅下面的示例

    mvn exec:java -Dexec.mainClass="de.my.path.JImp"
    

    【讨论】:

    • 我发现:“Maven 将首先尝试使用指定工件的本地副本。如果该工件在本地存储库中不存在,它将尝试从远程存储库下载”(@ 987654321@) 为什么要使用 mvn deploy 时必须定义一个仓库?
    • 调用 mvn 包就足够了,还是我必须通过调用 mvn 来运行整个默认生命周期(验证、编译、测试、打包、集成测试、验证、安装、部署)部署
    • mvn deploy 命令用于将您的工件上传到远程存储库。如果您只想添加本地存储库,那么mvn install 就可以了。
    • 对于你的第二个问题,它作为生命周期运行,所以当你在生命周期阶段执行时,比如package,它会自动执行之前的所有阶段。
    • 非常感谢您的帮助!!!对于我的第二个问题:默认情况下应该调用哪个阶段?我知道,这取决于我想要什么,但是“集成测试”和“验证”阶段对于查找错误或类似的东西有用吗?我认为我不需要“安装”和“部署”阶段,因为我不会在其他项目(本地和远程存储库)中使用我的工件
    猜你喜欢
    • 2011-09-12
    • 2011-05-31
    • 2015-12-03
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多