【问题标题】:Maven ignoring localRepository setting in user's settings.xmlMaven 忽略用户 settings.xml 中的 localRepository 设置
【发布时间】:2016-05-12 21:09:19
【问题描述】:

我遇到了 Maven 不遵守用户 settings.xml 文件中的 <localRepository> 值的问题。

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

Maven 运行良好,只是它忽略了我在 ssh 用户的 settings.xml 中定义的本地存储库:

vagrant@vagrant-ubuntu-trusty-64:/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 本地存储库作为主机操作系统和来宾操作系统共享的文件夹下的子目录在主机操作系统和来宾操作系统之间共享本地存储库:@987654324 @

但是,当我运行 Maven 并设置了 Debug 选项时:mvn -X Maven 告诉我它正在正确读取 settings.xml 文件,但由于某种原因没有正确设置本地存储库:

vagrant@vagrant-ubuntu-trusty-64:/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

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

在这种情况下,Maven 是否有任何原因无法正确读取或解释用户的 settings.xml 文件?

【问题讨论】:

    标签: maven vagrant chef-infra maven-3 chef-solo


    【解决方案1】:

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

    为了解决这个问题,我将配方默认属性文件 attributes/default.rb 中此属性的默认值更改为 default[maven][mavenrc][opts] = ''

    【讨论】:

      猜你喜欢
      • 2012-04-19
      • 1970-01-01
      • 2015-08-16
      • 2015-01-09
      • 2013-01-17
      • 1970-01-01
      • 2013-10-15
      • 2016-06-05
      相关资源
      最近更新 更多