Spring-boot测试加载外部jar(相当于loader.path)

Jeb*_*tin 5 talend spring-boot spring-boot-test

我们有一个应用程序,它对外部jar有运行时依赖性(例如在Spring-boot中运行的Talend作业).现在我们可以使用-Dloader.path参数从Spring-Boot启动它.但是,我们无法使用外部lib文件夹运行集成测试(即从Spring-Boot Test启动Talend作业).是否可以使用SpringBoot测试为集成测试加载外部作业?

bit*_*ttu 1

我把这个整理好了。

Intellij -> 选择模块 -> 打开模块设置 -> 依赖项 -> 添加依赖项 -> 选择外部 jar -> 范围仅用于测试。

这样,它对于测试用例来说工作得很好,同时没有在实际的主代码中使用。

罐子该放在哪里?

考虑到它将在测试用例中使用,我建议将 jar 提交到 src/test/lib 中,并在添加依赖项时选择此路径。

如果您在存储库中提交相同的文件,Intellij 会生成 .iml 文件(其中包含依赖项列表),然后其他团队成员可以轻松使用,无需任何进一步的设置。

现在问题仍然是 linux env 或 CIT 环境。我认为我们可以通过 CLASSPATH env 变量添加这个 jar,然后启动任何 CIT 作业。

混合解决方案,但它按我的预期工作。

另一种解决方案: 在本地存储库中安装外部 jar,并在 pom.xml 中添加具有测试范围的依赖项。这是一个简单的选择。

在本地存储库上安装 jar :

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>3.0.0-M1</version>
    <executions>
        <execution>
            <id>install-jar</id>
            <phase>initialize</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <file>${project.basedir}/src/test/lib/somejar-1.0.jar</file>
                <groupId>com.beta.gamma</groupId>
                <artifactId>somejar</artifactId>
                <version>1.0</version>
                <packaging>jar</packaging>
            </configuration>
        </execution>
    <executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

现在可以像其他依赖项一样添加为依赖项。这将适用于环境。