【问题标题】:Maven jetty download dependenciesMaven jetty 下载依赖
【发布时间】:2011-01-23 02:56:53
【问题描述】:

为什么每次我执行“mvn jetty:run”时,maven 都会尝试下载一些依赖项(apache poi 和 ojdbc jars)?如何禁用此功能?

[INFO] Scanning for projects..    
[INFO] Searching repository for plugin with prefix: 'jetty'.
[INFO] ------------------------------------------------------------------------
[INFO] Building infolitReport
[INFO]    task-segment: [jetty:run]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing jetty:run
Downloading: http://repository.springsource.com/maven/bundles/release/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom
Downloading: http://repository.springsource.com/maven/bundles/external/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom
Downloading: http://repository.springsource.com/maven/bundles/milestone/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom
Downloading: http://repository.springsource.com/maven/bundles/snapshot/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom
Downloading: http://repo1.maven.org/maven2/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom
Downloading: http://repository.springsource.com/maven/bundles/release/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom
Downloading: http://repository.springsource.com/maven/bundles/external/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom
Downloading: http://repository.springsource.com/maven/bundles/milestone/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom
Downloading: http://repository.springsource.com/maven/bundles/snapshot/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom
Downloading: http://repo1.maven.org/maven2/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom
[INFO] [aspectj:compile {execution: default}]

【问题讨论】:

    标签: maven-2 dependencies maven-jetty-plugin


    【解决方案1】:

    Pascal Thivent 的回答示例

    在本地存储库中创建 POM 文件(例如使用 install:install-file

    mvn install:install-file -DgroupId=org.apache.commons -DartifactId=codec -Dversion=1.3 -Dpackaging=jar -Dfile=lib/commons-codec-1.3.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=org.apache.commons -DartifactId=httpclient -Dversion=3.1 -Dpackaging=jar -Dfile=lib/commons-httpclient-3.1.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=org.apache.commons -DartifactId=logging -Dversion=1.1 -Dpackaging=jar -Dfile=lib/commons-logging-1.1.jar -DgeneratePom=true
    

    【讨论】:

      【解决方案2】:

      3.5.5. Maven's Dependency Management一章所述:

      Maven 中的依赖不只是一个 JAR 文件;它是一个 POM 文件,反过来,它可以声明对其他工件的依赖关系。这些依赖项的依赖项称为传递依赖项,它们之所以成为可能,是因为 Maven 存储库存储的不仅仅是字节码;它存储有关工件的元数据。

      因此,当 Maven 下载 JAR 依赖项时,它不仅下载 JAR,还下载 POM 文件。在这里,Maven 尝试下载它们,但它们不存在(仅存在 jar 文件)。所以maven不会把它们写入本地仓库,下次再试。

      这里有 4 个选项:

      1. 在 POM 文件中使用良好的公民工件(或要求负责人解决问题)。
      2. 使用存储库管理器并创建和上传 POM 文件。
      3. 在本地存储库中创建 POM 文件(例如使用 install:install-file)。
      4. 忍受它(叹气)并使用-o 选项离线运行mvn 以减少痛苦。

      【讨论】:

      【解决方案3】:

      基本上,在您第一次运行命令时会下载依赖项,但某些依赖项可能需要比较其版本,并在下次运行时尝试为您获取最新的。

      如果您并不总是有互联网连接,或者只是想缩短构建时间,您可以附加 -o 参数,这意味着 离线 可以运行,例如 mvn jetty:run -o

      【讨论】:

      • Maven 不再下载固定版本的工件。这里的问题是它甚至一次都无法成功下载 POM。
      【解决方案4】:

      为什么要阻止它?您可以在不下载依赖项的情况下运行它吗?如果您仍然想这样做,请检查一下

      http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html

      查看排除标签

      【讨论】:

        猜你喜欢
        • 2016-12-11
        • 2019-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-25
        • 2013-05-22
        • 2020-07-06
        • 2020-04-30
        相关资源
        最近更新 更多