将 spring boot 应用导入到另一个项目中

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

所以我尝试在另一个项目(测试框架)中添加一个 spring boot 可执行 jar 作为依赖项。

但是一旦添加到 pom 并导入。 Java 导入无法正常工作。如果我查看罐子内部,所有包都以:

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

还有一些spring boot相关的包,MANIFEST等等

如果我将 spring boot 应用程序的构建切换为仅使用 spring-boot-maven-plugin 安装和部署常规 jar,则不会

情况发生了变化,一切正常。不幸的是,这对我们来说不是一个解决方案,因为我们依赖可执行 jar 作为我们发布过程的一部分。

我可以构建部署两个版本的 jar 并使用分类器来确定每个版本吗?

谢谢

maven spring-boot spring-boot-maven-plugin
2个回答
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>

0
投票

如果您使用 Spring Boot Starter Parent 依赖项,那么简单地添加重新打包目标将不起作用。因为Spring自动添加了一个带有ID重新打包的重新打包目标。这个内置目标必须完全用分类器覆盖,如下所示

 <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
      <execution>
        <id>repackage</id>
        <configuration>
          <classifier>exec</classifier>
        </configuration>
      </execution>
    </executions>
    ...
  </plugin>

参考官方文档

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