4

为什么每次我执行“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}]
4

4 回答 4

4

如第3.5.5 章所述。Maven的依赖管理

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

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

这里有 4 个选项:

  1. 使用带有 POM 文件的优秀公民工件(或要求负责人解决问题)。
  2. 使用存储库管理器并创建和上传 POM 文件。
  3. 在本地存储库中创建 POM 文件(例如使用install:install-file)。
  4. 忍受它(叹气)并选择mvn离线运行-o以减少痛苦。
于 2010-03-03T13:45:52.903 回答
0

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

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

查看排除标签

于 2010-03-03T12:55:02.917 回答
0

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

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

于 2010-03-03T13:01:31.800 回答
0

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
于 2010-05-12T06:38:36.610 回答