将本地jar安装到自动化管道和声纳:如何在没有命令且没有系统路径的情况下进行安装?

问题描述 投票:0回答:1

我正在开发一个需要客户个人jar的项目,并且需要将其部署在我们无法控制的一系列工具中(非常遗憾)。此管道中的工具之一是声纳法。要构建和部署,我们必须使用Maven。

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

我尝试用addind标签代替,指向要存储必要jar的项目目录,在我的PC上运行正常,但在管道上完全失败,仅查看主存储库(我猜这是一些配置在管道上,但不能真正告诉我,超出了我的控制范围)

java maven jar maven-3 maven-plugin
1个回答
0
投票

实际上可以使用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

© www.soinside.com 2019 - 2024. All rights reserved.