将本地 jar 安装到自动化管道和 sonarqube:如何在没有命令和系统路径的情况下进行?
Installing local jar to automated pipeline and sonarqube: how to do it with no command and no systempath?
我正在开发一个需要客户端个人 jar 的项目,它需要部署在我们无法控制的工具管道上(很遗憾)。此管道中的工具之一是 sonarqube。
要构建和部署,我们必须使用 maven。
我将 jar 放入项目的文件夹中,并尝试了各种方法使其实际工作。
第一种(可行的)方法是将其作为一个系统,并使用指向项目文件夹的系统路径。它编译、工作和一切,但 sonarqube 显然讨厌 systemPath 并让我们把它拿走。
经过一点点搜索,我们向我们的 pom 添加了一个 maven-install-plugin,绑定了一个安装文件以验证阶段并配置为生成依赖项。如果我先 运行 mvn validate 然后 mvn clean package,这似乎在本地工作。否则,它会尝试在主存储库中查找 jar 并失败。如果我评论标签并只保留插件活动,我注意到它执行插件,将 jar 安装到本地存储库,但由于未解析包和 jar 中的 类,构建失败。如果我现在放入标签,一切正常,因为它现在在存储库中找到了 jar。
虽然这个解决方案有效,但它不适合我,因为存储库每隔一段时间就会被清空,并重新启动我需要提交的所有内容,一个已知的失败,只是为了安装 jar。
我尝试添加一个标签,指向一个项目目录,我将在其中存储必要的 jar,这在我的 PC 上工作得很好,但在管道上完全失败,只查看主存储库(我猜它是管道上的一些配置,但不能真正说出来,不在我的控制范围内)
实际上可以使用 maven 安装插件来完成,
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<configuration>
<groupId>com.exmaple.stuff</groupId>
<artifactId>ClientJar</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<file>${project.basedir}/src/main/resources/ClientJar-1.0.jar</file>
<generatePom>true</generatePom>
</configuration>
<executions>
<execution>
<id>install-client-jar</id>
<phase>validate</phase>
<goals>
<goal>install-file</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
并且有依赖性
<!-- Client jar -->
<dependency>
<groupId>example</groupId>
<artifactId>ClientJar</artifactId>
<version>1.0</version>
</dependency>
如果您注意到,这里棘手的部分实际上是 groupId 在依赖项和插件声明之间是不同的。我不知道这种差异是否是由于他们的 artifactory 服务器的配置造成的,但它似乎也适用于本地。
还需要在管道中显式 运行 mvn validate
我正在开发一个需要客户端个人 jar 的项目,它需要部署在我们无法控制的工具管道上(很遗憾)。此管道中的工具之一是 sonarqube。 要构建和部署,我们必须使用 maven。
我将 jar 放入项目的文件夹中,并尝试了各种方法使其实际工作。 第一种(可行的)方法是将其作为一个系统,并使用指向项目文件夹的系统路径。它编译、工作和一切,但 sonarqube 显然讨厌 systemPath 并让我们把它拿走。 经过一点点搜索,我们向我们的 pom 添加了一个 maven-install-plugin,绑定了一个安装文件以验证阶段并配置为生成依赖项。如果我先 运行 mvn validate 然后 mvn clean package,这似乎在本地工作。否则,它会尝试在主存储库中查找 jar 并失败。如果我评论标签并只保留插件活动,我注意到它执行插件,将 jar 安装到本地存储库,但由于未解析包和 jar 中的 类,构建失败。如果我现在放入标签,一切正常,因为它现在在存储库中找到了 jar。 虽然这个解决方案有效,但它不适合我,因为存储库每隔一段时间就会被清空,并重新启动我需要提交的所有内容,一个已知的失败,只是为了安装 jar。
我尝试添加一个标签,指向一个项目目录,我将在其中存储必要的 jar,这在我的 PC 上工作得很好,但在管道上完全失败,只查看主存储库(我猜它是管道上的一些配置,但不能真正说出来,不在我的控制范围内)
实际上可以使用 maven 安装插件来完成,
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<configuration>
<groupId>com.exmaple.stuff</groupId>
<artifactId>ClientJar</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<file>${project.basedir}/src/main/resources/ClientJar-1.0.jar</file>
<generatePom>true</generatePom>
</configuration>
<executions>
<execution>
<id>install-client-jar</id>
<phase>validate</phase>
<goals>
<goal>install-file</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
并且有依赖性
<!-- Client jar -->
<dependency>
<groupId>example</groupId>
<artifactId>ClientJar</artifactId>
<version>1.0</version>
</dependency>
如果您注意到,这里棘手的部分实际上是 groupId 在依赖项和插件声明之间是不同的。我不知道这种差异是否是由于他们的 artifactory 服务器的配置造成的,但它似乎也适用于本地。 还需要在管道中显式 运行 mvn validate