2016-05-12 63 views
0

我遇到Maven问题,不尊重我用户的settings.xml文件中的<localRepository>值。Maven在用户的settings.xml文件中忽略localrepository设置

我的环境是使用Chef配置的Vagrant实例。我已经使用厨师Maven cookbook安装了Maven。

Maven的运行,除了一个事实,即它无视我在SSH用户的settings.xml中定义的本地仓库罚款:

[email protected]:/vagrant$ cat ~/.m2/settings.xml 
<?xml version="1.0" encoding="UTF-8"?> 

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 

    <localRepository>/vagrant/.m2/repository</localRepository> 

</settings> 

正如你所看到的,我试图之间共享本地资源库主机操作系统,并通过将Maven的本地存储库作为该文件夹下的子目录中由主机操作系统和客户机操作系统共享的客户机操作系统:/vagrant/.m2/repository

然而,当我运行Maven与调试选项设置:mvn -X的Maven通知我它正确读取settings.xml文件,但是对于一些原因不正确设置本地的资源库:

[email protected]:/vagrant$ mvn -X 
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00) 
Maven home: /usr/local/maven 
Java version: 1.8.0_65, vendor: Oracle Corporation 
Java home: /usr/lib/jvm/jdk1.8.0_65/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux", version: "3.13.0-85-generic", arch: "amd64", family: "unix" 
[DEBUG] Created new class realm maven.api 
[DEBUG] Importing foreign packages into class realm maven.api 
[DEBUG] Imported: javax.enterprise.inject.* < plexus.core 
[DEBUG] Imported: javax.enterprise.util.* < plexus.core 
[DEBUG] Imported: javax.inject.* < plexus.core 
[DEBUG] Imported: org.apache.maven.* < plexus.core 
[DEBUG] Imported: org.apache.maven.artifact < plexus.core 
[DEBUG] Imported: org.apache.maven.classrealm < plexus.core 
[DEBUG] Imported: org.apache.maven.cli < plexus.core 
[DEBUG] Imported: org.apache.maven.configuration < plexus.core 
[DEBUG] Imported: org.apache.maven.exception < plexus.core 
[DEBUG] Imported: org.apache.maven.execution < plexus.core 
[DEBUG] Imported: org.apache.maven.execution.scope < plexus.core 
[DEBUG] Imported: org.apache.maven.lifecycle < plexus.core 
[DEBUG] Imported: org.apache.maven.model < plexus.core 
[DEBUG] Imported: org.apache.maven.monitor < plexus.core 
[DEBUG] Imported: org.apache.maven.plugin < plexus.core 
[DEBUG] Imported: org.apache.maven.profiles < plexus.core 
[DEBUG] Imported: org.apache.maven.project < plexus.core 
[DEBUG] Imported: org.apache.maven.reporting < plexus.core 
[DEBUG] Imported: org.apache.maven.repository < plexus.core 
[DEBUG] Imported: org.apache.maven.rtinfo < plexus.core 
[DEBUG] Imported: org.apache.maven.settings < plexus.core 
[DEBUG] Imported: org.apache.maven.toolchain < plexus.core 
[DEBUG] Imported: org.apache.maven.usability < plexus.core 
[DEBUG] Imported: org.apache.maven.wagon.* < plexus.core 
[DEBUG] Imported: org.apache.maven.wagon.authentication < plexus.core 
[DEBUG] Imported: org.apache.maven.wagon.authorization < plexus.core 
[DEBUG] Imported: org.apache.maven.wagon.events < plexus.core 
[DEBUG] Imported: org.apache.maven.wagon.observers < plexus.core 
[DEBUG] Imported: org.apache.maven.wagon.proxy < plexus.core 
[DEBUG] Imported: org.apache.maven.wagon.repository < plexus.core 
[DEBUG] Imported: org.apache.maven.wagon.resource < plexus.core 
[DEBUG] Imported: org.codehaus.classworlds < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.* < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.classworlds < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.component < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.configuration < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.container < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.context < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.lifecycle < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.logging < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.personality < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.util.xml.Xpp3Dom < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.util.xml.pull.XmlPullParser < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.util.xml.pull.XmlPullParserException < plexus.core 
[DEBUG] Imported: org.codehaus.plexus.util.xml.pull.XmlSerializer < plexus.core 
[DEBUG] Imported: org.eclipse.aether.* < plexus.core 
[DEBUG] Imported: org.eclipse.aether.artifact < plexus.core 
[DEBUG] Imported: org.eclipse.aether.collection < plexus.core 
[DEBUG] Imported: org.eclipse.aether.deployment < plexus.core 
[DEBUG] Imported: org.eclipse.aether.graph < plexus.core 
[DEBUG] Imported: org.eclipse.aether.impl < plexus.core 
[DEBUG] Imported: org.eclipse.aether.installation < plexus.core 
[DEBUG] Imported: org.eclipse.aether.internal.impl < plexus.core 
[DEBUG] Imported: org.eclipse.aether.metadata < plexus.core 
[DEBUG] Imported: org.eclipse.aether.repository < plexus.core 
[DEBUG] Imported: org.eclipse.aether.resolution < plexus.core 
[DEBUG] Imported: org.eclipse.aether.spi < plexus.core 
[DEBUG] Imported: org.eclipse.aether.transfer < plexus.core 
[DEBUG] Imported: org.eclipse.aether.version < plexus.core 
[DEBUG] Imported: org.slf4j.* < plexus.core 
[DEBUG] Imported: org.slf4j.helpers.* < plexus.core 
[DEBUG] Imported: org.slf4j.spi.* < plexus.core 
[DEBUG] Populating class realm maven.api 
[INFO] Error stacktraces are turned on. 
[DEBUG] Reading global settings from /usr/local/maven/conf/settings.xml 
[DEBUG] Reading user settings from /home/vagrant/.m2/settings.xml 
[DEBUG] Reading global toolchains from /usr/local/maven/conf/toolchains.xml 
[DEBUG] Reading user toolchains from /home/vagrant/.m2/toolchains.xml 
[DEBUG] Using local repository at /home/vagrant/.m2/repository 
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /home/vagrant/.m2/repository 

的Maven错误地设置了本地存储库的默认/home/vagrant/.m2/repository

我不认为这是文件夹在客户操作系统和主机操作系统之间共享的问题,因为正在运行的mvn -Dmaven.repo.local=/vagrant/.m2/repository正常运行。

在这种情况下Maven会不会正确读取或解释用户settings.xml文件?

回答

0

像往常一样,解释问题导致我找到答案的路径。对于任何人在这篇文章中绊倒的问题是,Chef Maven Cookbook有一个默认属性node['maven']['mavenrc']['opts'],它将/etc/mavenrc/的值设置为-Dmaven.repo.local=$HOME/.m2/repository -Xmx384m(自Cookbook的2.2.0版本开始)。这覆盖了我在用户的settings.xml文件中执行的本地存储库的所有配置。

为了解决这个问题我在配方的默认属性改变了这个属性的默认值文件attributes/default.rbdefault[maven][mavenrc][opts] = ''