2010-03-03 105 views
3

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

[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

如本章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,以减轻痛苦。
+0

对于ojdbc14,我编辑了我的pom。XML, repo1行家有机 行家repo1有机 http://repo1.maven.org/maven2 ojdbc ojdbc 但我不得不下载oj dbc14.jar手动安装它 http://lydonchandra.blogspot.com/2010/03/springsource-tool-suite-oracle-jdbc.html – portoalet

0

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

如果你并不总是有互联网连接或只是想短期你的编译时间,可以追加-o参数,这意味着离线运行,例如mvn jetty:run -o

+0

的Maven不会再次下载固定版本文物。这里的问题是,即使一次下载POM也没有成功。 –

+0

好的。罪魁祸首是ojdbc.jar和poi.jar – portoalet

0

帕斯卡尔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