【问题标题】:Why does maven use "?" as my home directory为什么Maven使用“?”作为我的主目录
【发布时间】:2012-09-17 18:33:48
【问题描述】:

有谁知道为什么 Centos 5.x 上的 maven 无法找到用户设置,除非我使用 '-s'?

  • 主页设置为 /home/build
  • $HOME/.m2/settings.xml 存在,用户拥有,用户可以读取
  • 我正在使用全新下载的 mvn 3.0.4(3.0.3 也失败)

我怀疑我的环境中有什么东西妨碍了我,但我不确定是什么。

找不到用户设置 -- 未使用“-s”

[build@...]$ echo $HOME; mvn clean -X|grep setting 

/home/build
[DEBUG] Reading global settings from .../apache-maven-3.0.4/conf/settings.xml
[DEBUG] Reading user settings from ?/.m2/settings.xml
[DEBUG]   Imported: org.apache.maven.settings < plexus.core

查找用户设置 -- 使用的“-s”

[build@...]$ echo $HOME; mvn clean -X -s $HOME/.m2/settings.xml|grep setting 

/home/build
[DEBUG] Reading global settings from .../apache-maven-3.0.4/conf/settings.xml
[DEBUG] Reading user settings from /home/build/.m2/settings.xml
[DEBUG]   Imported: org.apache.maven.settings < plexus.core

谢谢

彼得

【问题讨论】:

  • 你检查过你的MAVEN_OPTS变量没有什么奇怪的吗?
  • Maven 根据user.home 系统属性读取用户设置(这发生在org.apache.maven.settings.DefaultMavenSettingsBuilder 类中)。我建议你写一个小java程序来检查系统属性是否设置正确。或者,您可以尝试使用-Duser.home=/home/build 执行maven,看看它是否有效。
  • 啊,user.home 系统属性设置为 '?' (我将它添加到 antrun 执行中)。所以,现在我需要做的就是弄清楚是什么设置了它。我通过竹代理运行它,并且必须有一个导致问题的设置。谢谢。

标签: maven settings environment-variables


【解决方案1】:

“su”命令是这个特定问题的核心。 “su”可以作为另一个用户执行命令。在没有 "-" 的情况下使用时,它不会处理用于该用途的启动脚本,这在某些情况下会导致混合环境。

在编写 init.d 启动脚本时,请务必在调用命令时使用“su -”,否则您的构建系统用户将使用 root 用户的环境变量(包括 HOME)执行

在某些操作系统上出现问题,因为 BAMBOO_USER 在 root 用户的环境中运行

    su $BAMBOO_USER -c "cd ${BAMBOO_HOME}; nohup java -Dbamboo.home=${BAMBOO_HOME} ... &"

更合适的 init.d 脚本

    su - $BAMBOO_USER -c "cd ${BAMBOO_HOME}; nohup java -Dbamboo.home=${BAMBOO_HOME} ... &"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 2018-08-12
    相关资源
    最近更新 更多