我们计划创建一个Spring引导项目,我们将其创建为jar文件,这个jar我们将用作另一个spring引导应用程序的依赖项,点是第一个jar必须包含我们编码的类及其相关的jar文件,有可能吗?任何人都可以帮助我们。
问题是当我创建jar时,只有我编码的类正在打包到jar中,而不是该应用程序的依赖项
答案 0 :(得分:2)
根据您的构建系统,使用spring-boot-maven-plugin
或spring-boot-gradle-plugin
。这些插件的目的正是您的用例。
Spring Guides是开始探索的好地方:Maven Guide,Gradle Guide。
唯一需要注意的是,您要从此类共享库中排除tomcat内部容器:
的Maven:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- ... -->
</dependencies>
摇篮:
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
...
}
答案 1 :(得分:1)
您可以使用“ maven shade”插件创建一个Fat罐,也就是您要在子项目中使用的父项目的uber-jar来做到这一点。此Fat jar包含您编写的代码以及项目的所有依赖项。您可以在此处查看更多详细信息:https://maven.apache.org/plugins/maven-shade-plugin/index.html。创建的Fat jar将放置在您的本地存储库中。
在子项目中,可以通过指定以下属性来将父项目用作依赖项:
<dependency>
<groupId>parent_project_group_id</groupId>
<artifactId>parent_project_artifact_id</artifactId>
<version>parent_project_version</version>
<dependency>
确保您使用Maven Shade插件而不是Spring Boot默认插件构建父项目。另外,在构建父项目时,请以“全新安装”为目标。