【问题标题】:Jenkins repository location詹金斯存储库位置
【发布时间】:2014-03-13 16:38:14
【问题描述】:

这可能是一个奇怪的问题,但这正在发生在我身上。谁能告诉我 Jenkins 在构建 Maven 项目时使用哪个存储库位置?我在配置 Jenkins 时选择了Default (~/.m2/repository) 选项,但似乎行为有点不同。虽然在我的本地存储库(即/home/username/.m2)中存在这个 myown.jar,但它显示 myown.jar 未找到的错误。所以我必须为这个myown 项目构建一个工作,构建它然后错误得到解决。

不仅如此,当我将 Jenkins 脚本启动时,即/usr/bin/java -jar <warpath>.war,它在构建它时再次下载了我的项目的所有依赖项,尽管我在启动脚本之前已经构建了配置的项目 5 次!!是不是很奇怪的行为? Jenkins 使用哪个存储库位置?还是有什么我可能遗漏的东西?

【问题讨论】:

    标签: java maven jenkins


    【解决方案1】:

    实际上它取决于每个单独的 Maven 项目的配置。默认情况下,如果您通过勾选自动安装复选框安装 maven,Jenkins 将使用本地存储库 JENKINS_HOME_DIR/.m2/repository,否则它将使用本地 /home/username/.m2/repository。

    但是您可以通过在 ~/.m2/settings.xml 中设置 settings.xml 文件来更改此默认位置

    为了全球使用,您可以从 jenkins_home_dir/conf 更改它

    例如,如果您通过勾选自动安装复选框来安装 maven

    Step1.为jenkins主目录中的特定项目选择maven安装

    $ cd Jenkins_home_dir/tools/hudson.tasks.Maven_MavenInstallation/
    

    Step 2.更改settings.xml中的localRepository

    settings.xml 的层次结构是用户.m2 目录,如果找不到,它将尝试在{maven home}/conf/settings.xml 中查找。

    【讨论】:

      【解决方案2】:

      在unix系统上使用find工具,

      [root@ip-172-23-38-167 ~]# sudo find / -name ".m2"
      /root/.m2
      /var/lib/jenkins/.m2
      

      它在 rhel 上的 /var/lib/jenkins 下,(JENKINS_HOME_DIR 应该是 /var/lib/jenkins

      [root@ip-172-23-38-167 ~]# ll /var/lib/jenkins/.m2/repository/
      total 8
      drwxr-xr-x.  4 jenkins jenkins   35 Apr 25 00:12 asm
      drwxr-xr-x.  3 jenkins jenkins   38 Apr 23 20:18 backport-util-concurrent
      drwxr-xr-x.  3 jenkins jenkins   17 Apr 25 00:12 ch
      drwxr-xr-x.  3 jenkins jenkins   25 Apr 23 20:17 classworlds
      drwxr-xr-x. 23 jenkins jenkins 4096 Apr 25 03:49 com
      drwxr-xr-x.  3 jenkins jenkins   25 Apr 23 20:17 commons-cli
      drwxr-xr-x.  3 jenkins jenkins   27 Apr 23 20:17 commons-codec
      drwxr-xr-x.  3 jenkins jenkins   26 Apr 23 20:17 commons-dbcp
      drwxr-xr-x.  3 jenkins jenkins   24 Apr 23 20:18 commons-io
      drwxr-xr-x.  3 jenkins jenkins   26 Apr 23 20:18 commons-lang
      drwxr-xr-x.  4 jenkins jenkins   56 Apr 24 22:45 commons-logging
      drwxr-xr-x.  3 jenkins jenkins   26 Apr 23 20:17 commons-pool
      drwxr-xr-x.  3 jenkins jenkins   27 Apr 25 00:11 eventstream
      drwxr-xr-x.  6 jenkins jenkins   63 Apr 25 00:29 io
      drwxr-xr-x.  6 jenkins jenkins   69 Apr 25 00:11 javax
      drwxr-xr-x.  3 jenkins jenkins   19 Apr 24 23:09 jline
      drwxr-xr-x.  3 jenkins jenkins   23 Apr 24 23:09 joda-time
      drwxr-xr-x.  3 jenkins jenkins   19 Apr 23 20:17 junit
      drwxr-xr-x.  3 jenkins jenkins   19 Apr 24 22:45 log4j
      drwxr-xr-x.  9 jenkins jenkins  104 Apr 25 00:11 net
      drwxr-xr-x.  3 jenkins jenkins   17 Apr 25 00:12 nz
      drwxr-xr-x.  3 jenkins jenkins   18 Apr 25 00:12 ognl
      drwxr-xr-x. 34 jenkins jenkins 4096 Apr 25 00:12 org
      drwxr-xr-x.  3 jenkins jenkins   20 Apr 24 23:09 software
      drwxr-xr-x.  3 jenkins jenkins   21 Apr 25 01:47 xmlpull
      drwxr-xr-x.  3 jenkins jenkins   22 Apr 25 01:47 xpp3
      

      【讨论】:

        【解决方案3】:

        在 Windows 上,当安装并作为 Windows 服务运行时,这可以默认为以下内容。

        C:\Windows\SysWOW64\config\systemprofile\.m2\repository

        C:\Windows\System32\config\systemprofile\.m2\repository

        【讨论】:

        • 如何修复更改 C:\Windows\System32\config\systemprofile\.m2\repository,因为我设置了全局配置,但没有更改???
        • 追踪起来特别奇怪,因为默认情况下,像 Agent Ransack 这样的查找工具不会看到这个目录——所以我会在我的硬盘上搜索一个 .m2 目录,但什么也找不到。跨度>
        • @kylexy1357 这是 Windows 上 SYSTEM 帐户的 USERPROFILE 主路径。 psexec -s cmd.exe 后跟 echo %USERPROFILE%%USERPROFILE%\.m2\repository 是默认的 Maven 本地存储库位置。您可以更改运行 Jenkins 服务的用户名,这也会更改 USERPROFILE。您也可以在 Jenkins > 配置 Jenkins > 系统信息网页中看到它。
        【解决方案4】:

        默认情况下,Jenkins 会使用运行 Jenkins 的用户账户下的本地仓库 ~/.m2/repository。

        可以将其配置为使用私有存储库进行构建,但听起来好像您还没有配置。

        当我将 Jenkins 脚本放入启动时,即 /usr/bin/java -jar .war,它在构建它时再次下载了我的项目的所有依赖项,尽管我在放入脚本之前已经构建了 5 次配置的项目启动

        从这里,听起来您的启动脚本可能以不同的用户身份运行?也许是root 用户?

        以 root 身份运行 Jenkins 会导致它使用不同的本地存储库,即 /root/.m2/repository。您可以检查那里是否有 Maven 存储库,如果有,请确保 Jenkins 永远不会以 root 身份运行。

        【讨论】:

          【解决方案5】:

          我建议使用configuration file provider plugin 来管理 Maven 设置。

          该插件允许通过 Jenkins UI 管理配置文件,并为每个 Maven 项目构建轻松选择。

          【讨论】:

            【解决方案6】:

            它应该使用您在/home/username/.m2/settings.xml 中配置的任何内容 - 请记住 username 将是有效执行 jenkins 服务器的那个。但是,如果您当前的 maven 版本在其 /conf 目录中有一些 settings.xml,那么与 /home 中的相比,那个是优先的

            找到(或创建)该 settings.xml 后,将其指向您需要拥有本地存储库的任何位置

            【讨论】:

              【解决方案7】:

              在 Ubuntu 中,我在 /var/lib/jenkins/.m2 下找到了存储库位置 我刚刚删除了那个,而是创建了一个指向我现有的 Maven 存储库的链接......

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2014-02-28
                • 2019-12-02
                • 2013-04-28
                • 1970-01-01
                • 1970-01-01
                • 2012-01-16
                • 2011-12-15
                相关资源
                最近更新 更多