Java maven构建,jenkins没有从本地.m2存储库中获取jar

Java maven构建,jenkins没有从本地.m2存储库中获取jar,java,maven,jenkins,Java,Maven,Jenkins,我有一份jenkins的工作来构建我的maven项目(比如项目a),它依赖于另一个本地项目(比如项目B)创建的jar。jar存在于我的local.m2 repo中,但Jenkins在local repo中找不到它,并在central()中搜索它,显然它找不到,因此我的工作失败了。在将此问题发布到此处之前,我已执行了以下检查: 依赖项目和独立项目中工件的版本匹配 我的机器的本地.m2存储库具有所需的依赖项jar版本 编写了一个单独的jenkins作业来构建项目B,它构建成功,jar位于jenkin

我有一份jenkins的工作来构建我的maven项目(比如项目a),它依赖于另一个本地项目(比如项目B)创建的jar。jar存在于我的local.m2 repo中,但Jenkins在local repo中找不到它,并在central()中搜索它,显然它找不到,因此我的工作失败了。在将此问题发布到此处之前,我已执行了以下检查:

  • 依赖项目和独立项目中工件的版本匹配
  • 我的机器的本地.m2存储库具有所需的依赖项jar版本
  • 编写了一个单独的jenkins作业来构建项目B,它构建成功,jar位于jenkins home的.m2存储库中,路径为/var/lib/jenkins/.m2(如果jenkins试图在自己的.m2存储库中找到jar)
  • 将Maven安装的Jenkins“全局工具配置”从手动(我已经手动设置了Maven主页)更改为自动安装(版本3.3.9)。运气不好,问题还是一样
  • 尚未对maven settings.xml进行任何更改
  • 如果我尝试使用
    mvn clean install
    在没有Jenkins的情况下手动构建项目,它将成功构建 所以,只有詹金斯,我才无法建立这个项目

    这是我的项目A的POM

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.akamai</groupId>
        <artifactId>cobra-tracer-api</artifactId>
        <version>1.0.2</version>
        <packaging>war</packaging>
    
        <name>cobra-tracer</name>
        <url>http://maven.apache.org</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
        <build>
            <finalName>cobra-tracer</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.5.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
        <dependencies>
            //some dependencies here
            <dependency>
                <groupId>com.akamai.aps</groupId>
                <artifactId>logger-service</artifactId>
                <version>0.0.2</version>
            </dependency>
    
        </dependencies>
    </project>
    
    
    4.0.0
    com.akamai
    眼镜蛇示踪api
    1.0.2
    战争
    眼镜蛇示踪剂
    http://maven.apache.org
    UTF-8
    眼镜蛇示踪剂
    org.apache.maven.plugins
    maven编译器插件
    3.5.1
    1.8
    1.8
    //这里有一些依赖项
    com.akamai.aps
    记录器服务
    0.0.2
    
    项目B的POM为

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.akamai.aps</groupId>
        <artifactId>logger-service</artifactId>
        <version>0.0.3</version>
        <packaging>jar</packaging>
    
        <name>logger-service</name>
        <url>http://maven.apache.org</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>
    
    
    4.0.0
    com.akamai.aps
    记录器服务
    0.0.3
    罐子
    记录器服务
    http://maven.apache.org
    UTF-8
    朱尼特
    朱尼特
    3.8.1
    测试
    
    您将jenkins与maven集成的方式是不正确的。您必须使用其中一个或,它们都有足够好用的免费版本。您构建项目B并将其部署到上面的存储库管理器,项目A从存储库管理器下载它

    对于您的具体问题,请检查

  • 在项目配置中,选中。这将为每个jenkins执行器创建单独的存储库。如果jenkins master中的执行器对于A和B是不同的,则不会看到jar文件
  • 在您的设置中,您不能添加任何从属设备。所有构建都应该在master上运行。我希望你不是把他们分开管理
  • 我假设您已经使用
    mvn安装运行了项目“B”。在项目“A”中,使用-U标志运行maven命令<代码>mvn-U安装
  • 查看jenkins作业命令行。确保它没有使用-s标志运行maven。这是传递不同setting.xml的一种方法。示例
    mvn-s/home/jenkins/setting.xml安装
    。有一个选项可以在jenkins项目配置中定义不同的设置文件
  • 看看你的maven安装路径。它应该位于jenkins工作区/工具位置。检查/conf中的setting.xml。确保未定义本地存储库。如果jenkins正在安装它,那么不应该设置它
  • 检查.m2文件夹中是否存在setting.xml文件,该文件具有不同的repo路径 让我知道进展如何


    由于您现在已经在工作流中添加了artifactory,并且面临插件未找到的问题,请在settings.xml中添加以下内容

    <mirrors>
      <mirror>
       <mirrorOf>*</mirrorOf>
       <name>remote-repos</name>
       <url>http://<artifactory-ip>:<artifactory-port>/artifactory/repo</url>
       <id>remote-repos</id>
      </mirror>
    </mirrors>
    
    <pluginRepositories>
      <pluginRepository>
       <snapshots>
         <enabled>false</enabled>
        </snapshots>
       <id>central</id>
       <name>plugins-release</name>
       <url>http://<artifactory-id>:<artifactory-port>/artifactory/plugins-release</url>
      </pluginRepository>
     <pluginRepository>
       <snapshots />
         <id>snapshots</id>
        <name>plugins-snapshot</name>
        <url>http://<artifactory-id>:<artifactory-port>/artifactory/plugins-snapshot</url>
     </pluginRepository>
    </pluginRepositories>
    
    
    *
    远程回购
    http://:/artifactory/repo
    远程回购
    假的
    中心的
    插件发布
    http://:/artifactory/plugins发行版
    快照
    插件快照
    http://:/artifactory/plugins快照
    

    我假设您已经添加了存储库标签

    请分享您的pomsDo您希望Jenkins使用您当地的maven存储库吗?我希望您将项目B部署(而不是安装)到jenkins的maven repo或jenkins自己构建项目B。这样jenkins就可以找到依赖项。它是否尝试远程下载jar?还有第2点。你们也有POM吗?你能分享控制台outputHi Gaurav吗,谢谢你的回复。我在同一台机器上设置了Artifactory,但一直面临连接重置问题,因此尝试首先使用本地maven存储库构建项目。我正在为你的建议添加答案:1.maven项目配置选择了“default~/.m2 repository”,因此没有为项目A和B创建单独的存储库2.我在一台机器上运行所有内容,没有从机。3。是的,我使用mvn安装运行项目B。我尝试使用“mvn-U安装”运行项目A,但没有成功,遇到了相同的问题。4.我没有在maven中使用-s开关来指定不同的设置文件。5.检查了jenkins工作区/工具位置中的设置文件,未定义本地存储库。6.local.m2或jenkins.m2文件夹中都没有设置文件。嗨,Riyanka,你能检查一下项目B创建的jar文件的权限吗?我想知道这是否是一个许可问题。然而,我确实觉得,如果您设法解决了这个问题,您仍然需要使用repository manager。为什么不解决这个问题,因为这是一个更长期的解决方案。嗨,Gaurav,我使用Artifactory插件与Jenkins一起配置了Artifactory,现在项目B的jar出现在libs release local repo的Artifactory中。现在在项目A的工作中,我添加了配置来解析libs release local中的工件。我得到以下错误:[错误]Plu