是否有一个具体的推荐方法将spring启动的父pom包含到已经有一个必需的父pom的项目中?
对于需要从组织父级扩展的项目,您有什么建议(这是非常常见的,甚至是许多/大多数项目发布到Maven central,这取决于它们来自的feeder Repo)。大部分构建内容都与创建可执行JAR相关(例如,运行嵌入式Tomcat/Jetty)。有一些html" target="_blank">方法可以对事物进行结构化,这样您就可以获得所有的依赖关系,而不需要从父级扩展(类似于组合与继承)。但是你不能用这种方法来构建。
那么,在所需的父pom中包含所有的spring引导父pom还是在项目pom文件中仅具有pom依赖项更好。
其他选择?
提亚,
斯科特
使用1.5.9更新2018-01-04。
我在这里有完整的代码和可运行的示例https://www.surasint.com/spring-boot-with-no-parent-example/
你需要这个作为一个基本的
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${springframework.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
但这还不够,您还需要为spring-boot-maven-plugin显式定义目标(如果您使用spring boot作为父级,则不必显式定义此目标)
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${springframework.boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
否则,您无法构建为可执行的jar或WAR。
还没有,如果您使用的是JSP,则需要具备以下内容:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
否则,您将得到以下错误消息:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project spring-boot-09: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executi
ng in update mode) -> [Help 1]
不,不,如果您使用Maven配置文件和资源筛选器,spring boot带有“@”,而不是“${}”(如本例https://www.surasint.com/spring-boot-maven-resource-filter/),那么这仍然是不够的。那么您需要显式地将此添加到
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
这个在里面
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
请参阅链接https://www.surasint.com/spring-boot-with-no-parent-example/中的示例。
您可以像使用“BOM”一样使用spring-boot-starter-parent(C.F.spring和Jersey现在支持该特性的其他项目),并且只将其包含在带有scope=import的依赖项管理部分中。这样,您就可以获得使用它的很多好处(即依赖项管理),而不需要替换实际的父项中的设置。
它做的另外两件主要事情是
spring boot文件中提供的例子:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
下面是我的pom.xml文件:
我读了很多关于如何在spring boot项目中使用spring-boot-starter-parent的帖子。基本上,我读过一些帖子(Spring文档也讨论了这一点),这些帖子描述了两种实现这一点的方法 直接使用spring-boot-starter-parent作为项目父级。它给我们带来了依赖管理和插件管理的好处。 另一种方法是在项目pom中导入spring-boot-starter父级(如果
我们的结构如下: 在我们的通用api中,我们定义了protobuf消息,还定义了帮助器类和类型,并希望其他人使用它们。 当我们向客户提供common-api.jar时,他们还需要两个父pom(pom2和pom1),以便在他们自己的maven服务器上重新部署它们。 一种向他们提供POM的方法,我们可以公开我们的maven存储库,至少是所需的部分,但不幸的是,目前这不是一个选项。 有没有办法自动创建公
我在stackoverflow上读了几个“不可解析的父POM:”问题,但没有任何帮助。 我的目录结构如下: 我得到以下错误:
当我使用mvn install构建工件时,我看到JAR在我的.m2文件夹中构建,但是Project.version没有替换为实际版本,即1.0-Snapshot。 > 每个工件的.m2存储库中的父pom和/或子pom是否具有指定的版本,或者是否为Project.version 我是否应该在父POM中指定Project.Version作为属性。maven文档说明Project.version可由De
使用可以用于基于的遗留用例,但也可以测试我们正在迁移的未来用例:。 我是否可以在每次修改POM时实现以下反应器构建?或者,类似的东西?或者,Maven仅仅是这个用例的错误工具吗? 理想情况下,我希望在一个反应器构建中实现所有功能,每个编译并与每个继承的依赖项一起使用。我知道这会使我的Maven repo处于不希望的状态,但至少我可以将反应器构建插入到我的CI,并确保我的构建在依赖平台上运行。 注意