将Spring Boot应用程序导入另一个项目中。

12

我试图将一个Spring Boot可执行jar包添加为另一个项目(测试框架)的依赖项。

然而,一旦将其添加到pom中并导入后,Java的导入不起作用。如果我看一下jar包的内部,所有的包名都被前缀为:

BOOT-INF/classes.some.package.classname.class

还有一些与Spring Boot相关的包,MANIFEST等等。

如果我将Spring Boot应用程序的构建方式切换为使用spring-boot-maven-plugin安装和部署常规jar包,则情况会发生改变,一切都可以正常工作。不幸的是,这对我们来说不是一种解决方案,因为我们依赖于可执行jar包作为我们发布流程的一部分。

我能否构建并部署两个版本的jar包,并使用分类器来确定每个版本?

谢谢


“如果我查看jar文件” <- 你是指由Maven构建的jar文件吗?你能发布你的pom.xml吗?你是用mvn install构建jar文件的吗? - Mathias Conradt
1个回答

15

结果证明,使用spring-boot-maven-plugin插件可以实现这个精确的场景。

Spring Boot应用程序的pom文件:

  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.4.1.RELEASE</version>
    <executions>
      <execution>
        <goals>
          <goal>repackage</goal>
        </goals>
        <configuration>
          <classifier>exec</classifier>
        </configuration>
      </execution>
    </executions>
    ...
  </plugin>

使用 Spring Boot JAR 的项目可以正常添加:

    <dependency>
        <groupId>com.springboot</groupId>
        <artifactId>app</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <scope>test</scope>
    </dependency>

或者如果您想引用可执行的Jar文件

    <dependency>
        <groupId>com.springboot</groupId>
        <artifactId>app</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <scope>test</scope>
        <classifier>exec</classifier>
    </dependency>

2
对我很有用。它救了我的一天 :) - Rafa
我应该将项目导入第二个项目的ClassPath中吗? - Francisco Souza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接