有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java maven构建,jenkins不从本地获取jar。m2存储库

我有一份jenkins的工作,负责构建我的maven项目(比如项目a),它依赖于另一个本地项目(比如项目B)创建的jar。这个罐子在我的本地商店里。m2回购协议,但詹金斯未能在本地回购协议中找到它,并前往中环(https://repo.maven.apache.org/maven2)搜索它,显然它不会找到,因此我的工作失败了。在将此问题发布到此处之前,我已进行了以下检查:

  1. 依赖项目和独立项目中工件的版本匹配
  2. 当地人。我机器的m2存储库具有所需的依赖项jar版本
  3. 编写了一个单独的jenkins作业来构建项目B,它成功地构建了项目B,jar出现在。m2 Jenkins home的存储库以及路径是/var/lib/Jenkins/。m2(以防jenkins试图在自己的.m2存储库中找到这个罐子)
  4. 将Maven安装的Jenkins“全局工具配置”从手动(我已经手动设置了Maven home)更改为自动安装(版本3.3.9)。运气不好,问题还是一样
  5. maven设置未做任何更改。xml
  6. 如果我尝试在没有Jenkins的情况下使用mvn clean install手动构建项目,它将成功构建

所以,只有詹金斯让我无法完成这个项目

这是我的项目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>

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>

共 (1) 个答案

  1. # 1 楼答案

    你把詹金斯和马文结合起来的方式是不正确的。你必须使用artifactorynexus,它们都有足够好用的免费版本。您构建项目B并将其部署到上面的repository manager,项目A从repository manager下载它

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

    1. 在项目配置中,选中private repository option。这将为每个jenkins executor创建单独的存储库。如果jenkins master中的执行者对于A和B是不同的,您将看不到jar文件
    2. 在设置中,不能添加任何从属设备。所有构建都应该在master上运行。我希望你不是把他们分开管理
    3. 我假设您已经使用mvn install运行了您的项目“B”。在项目“A”中,使用-U标志运行maven命令mvn -U install
    4. 看看你的詹金斯工作命令行。确保它没有使用-s标志运行maven。这是一种通过不同设置的方法。xml。例如mvn -s /home/jenkins/setting.xml install。在jenkins项目配置中,可以选择定义不同的设置文件
    5. 看看你的maven安装路径。它应该位于jenkins工作区/工具位置。检查设置。xml在/conf中。确保未定义本地存储库。如果詹金斯正在安装它,那么就不应该设置它
    6. 检查是否在你的房间里。m2文件夹有设置。具有不同repo路径的xml文件

    告诉我进展如何


    由于您现在已经在工作流中添加了artifactory,并且面临插件未找到问题,请在您的设置中添加以下内容。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>
    

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