我正在开发一个需要客户个人jar的项目,并且需要将其部署在我们无法控制的一系列工具中(非常遗憾)。此管道中的工具之一是声纳法。要构建和部署,我们必须使用Maven。
我将jar放入项目的文件夹中,并尝试了各种方法使其真正起作用。第一种(可行的)方法是将其作为带有systemPath的系统,该文件夹指向项目的文件夹。它可以编译,运行并完成所有工作,但是声纳古派显然讨厌systemPath并把我们带走了。经过一点点搜索,我们将一个maven-install-plugin添加到了pom中,对一个安装文件进行了绑定以验证阶段并配置为生成依赖项。如果我先运行mvn validate和THEN mvn clean package,这似乎可以在本地运行。否则,它将尝试在主存储库上查找jar并失败。如果我注释标签并仅使插件处于活动状态,我会注意到它会执行插件,将jar安装到本地存储库,但是由于无法解析jar中的包和类而导致构建失败。如果现在放入标记,则一切正常,因为它现在可以在存储库中找到该jar。尽管该解决方案有效,但它并不适合我,因为存储库会不时地清空,并重新启动我需要提交的所有内容,这显然是失败的,仅用于安装jar。
我尝试用addind标签代替,指向要存储必要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不同。我不知道这种差异是否是由于其人工服务器的配置所致,但它似乎也可以在本地工作。另外,还需要在管道中显式运行mvn validate