首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring-boot-maven-plugin不将依赖类拖进jar中。

spring-boot-maven-plugin不将依赖类拖进jar中。
EN

Stack Overflow用户
提问于 2019-02-01 14:00:42
回答 1查看 1.7K关注 0票数 0

我对spring-boot-maven-plugin有一个问题,因为它不包括结果jar文件中的依赖类。

文档中,它声明jar文件中将包含范围为provided的依赖项,但我无法让它包含它们。

我有一个有两个子模块的项目:modelrestServer.在model模块中,我想使用swagger基于openApi输入模型进行编码。生成的类被放入jar文件:model/target/rest-model-0.0.1-SNAPSHOT.jar中。

restServer模块中,我有Spring和Application代码,并希望将restServer类“拉”到结果jar文件中:带有spring-boot-maven-plugin构建器的restServer/target/rest-server-0.0.1-SNAPSHOT.jar,但它不包括model子模块中的任何内容。

下面列出了整个项目结构和pom文件。

如何让spring-boot-maven-pluginmodel子模块中提取类文件,从而有效地创建一个“胖”的自包含的jar?

项目结构

代码语言:javascript
复制
project-root/
    pom.xml # parent pom
    model/
        pom.xml
        src/main/openApi/model.json
        target/
            generated-sources/* (package: com.me.rest.model.*)
            rest-model-0.0.1-SNAPSHOT.jar

    restServer/
        pom.xml
        src/main/java/com/me/rest/
            controller/Controller.java
            Application.java

亲本pom.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.2.RELEASE</version>
  </parent>

  <groupId>com.me</groupId>
  <artifactId>rest-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>rest</name>
  <packaging>pom</packaging>

  <description>Swagger codegen for Spring Rest Server sandbox project</description>

  <scm>
    <connection>scm:git:git@github.com:swagger-api/swagger-codegen.git</connection>
    <developerConnection>scm:git:git@github.com:swagger-api/swagger-codegen.git</developerConnection>
    <url>https://github.com/swagger-api/swagger-codegen</url>
  </scm>

  <prerequisites>
    <maven>2.2.0</maven>
  </prerequisites>

  <modules>
    <module>model</module>
    <module>restServer</module>
  </modules>
</project>

模型/put.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.kontron</groupId>
        <artifactId>rest-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <groupId>com.kontron</groupId>
    <artifactId>rest-model</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies> ... </dependencies>

    <build>
        <plugins>
            <!-- Swagger codegen plugin -->
            <plugin>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-codegen-maven-plugin</artifactId>
                <version>2.3.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration> ... </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

restServer/put.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
      <groupId>com.kontron</groupId>
      <artifactId>rest-parent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>rest-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.kontron</groupId>
            <artifactId>rest-model</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>provided</scope>     <!-- Notice scope is provided -->
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.1.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

更新:添加生成的META/MANIFEST.MF:

代码语言:javascript
复制
Manifest-Version: 1.0
Implementation-Title: rest-server
Implementation-Version: 0.0.1-SNAPSHOT
Built-By: bjohnson
Implementation-Vendor-Id: com.me
Spring-Boot-Version: 2.1.2.RELEASE
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.me.rest.Application
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.5.4
Build-Jdk: 1.8.0_144
Implementation-URL: https://projects.spring.io/spring-boot/#/spring-bo
 ot-starter-parent/rest-parent/rest-server
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-01 14:17:08

依赖项放置在重新打包的JAR文件的BOOT-INF\lib中。

此路径将添加到的类路径中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54481050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档