Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven Spring Boot-已拥有父pom时的父pom_Maven_Spring Boot_Parent Pom - Fatal编程技术网

Maven Spring Boot-已拥有父pom时的父pom

Maven Spring Boot-已拥有父pom时的父pom,maven,spring-boot,parent-pom,Maven,Spring Boot,Parent Pom,是否有一种特定的推荐方法来将spring boot父pom包含到已经具有所需父pom的项目中 对于需要从组织父级扩展的项目,您有什么建议(这是非常常见的,甚至是许多/大多数项目发布到Maven central,具体取决于它们来自的子级回购协议)。大多数构建工作都与创建可执行JAR有关(例如,运行嵌入式Tomcat/Jetty)。有一些方法可以构造事物,这样您就可以在不从父级扩展的情况下获得所有依赖项(类似于组合与继承)。但是你不能用这种方式得到一个构建的东西 因此,最好是将所有spring bo

是否有一种特定的推荐方法来将spring boot父pom包含到已经具有所需父pom的项目中

对于需要从组织父级扩展的项目,您有什么建议(这是非常常见的,甚至是许多/大多数项目发布到Maven central,具体取决于它们来自的子级回购协议)。大多数构建工作都与创建可执行JAR有关(例如,运行嵌入式Tomcat/Jetty)。有一些方法可以构造事物,这样您就可以在不从父级扩展的情况下获得所有依赖项(类似于组合与继承)。但是你不能用这种方式得到一个构建的东西

因此,最好是将所有spring boot父pom包含在所需父pom中,还是在项目pom文件中仅具有pom依赖项

其他选择

蒂亚


Scott

您可以像“bom”一样使用spring boot starter父级(c.f.和Jersey现在支持此功能的其他项目),并且只将其包含在scope=import的依赖项管理部分。这样,您就可以从使用它中获得很多好处(即依赖项管理)而不替换实际父对象中的设置

它所做的另外两件主要事情是

  • 定义一组属性,用于快速设置要覆盖的依赖项的版本
  • 使用默认配置配置一些插件(主要是SpringBootMaven插件)。因此,如果您使用自己的家长,这些都是您必须手动执行的操作
  • 示例见:

    
    org.springframework.boot
    spring启动依赖项
    2.1.3.1发布
    聚甲醛
    进口
    
    用1.5.9.0版本更新2018-01-04

    我这里有完整的代码和可运行的示例

    你需要这个作为基本的

       <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>
    
    不,不,如果您使用Maven概要文件和资源过滤器,并使用带“@”而不是“${}”的Spring引导(如本例),那么这仍然是不够的。然后您需要显式地将其添加到

        <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>
    
    
    src/main/resources
    真的
    
    而这个呢

        <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>
    
    
    org.apache.maven.plugins
    
    根据Surasin Tancharoen的回答,您可能还需要定义maven surefire插件

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire-plugin.version}</version>
            </plugin>
    
    
    org.apache.maven.plugins
    maven surefire插件
    ${maven surefire plugin.version}
    
    可能还包括fail fast插件

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>${maven-failsafe-plugin.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    
    
    org.apache.maven.plugins
    maven故障保护插件
    ${maven failsafe plugin.version}
    集成测试
    验证
    
    我猜这确实会吸引插件-阴影等?不。请阅读链接:“您仍然可以保留依赖关系管理的好处(但不是插件管理)”@DaveSyer请澄清:1:当我有了自定义的
    项目父项
    时,我可以将
    spring boot starter父项
    添加到此
    项目父项
    -可以吗?在这种情况下,我是否也需要
    spring引导依赖项
    ?2:我使用springboot:run运行的普通springboot项目。如何使用不同的父pom运行项目?上面的代码片段足以获得依赖项管理功能。如果你想要插件(比如
    springboot:run
    ),你需要把它们分开。如果你想的话,你可以从启动父线程复制粘贴。我知道这是一个旧线程,但它帮了我很多,谢谢。我最终从源头上读到了这个机制。这解释了很多。@Arvind警告,我的例子是1.5.9。你应该使用1.5.11(昨天发布),因为这个版本修复了一个严重的安全问题。正如你的博客所提到的,我试图添加maven resources插件,但它仍然给我“在目标中没有主清单属性”。我试过运行spring boot:run,这也不起作用:(@sagar27你使用的是1.5.X还是2.X版本?如果是2.X,可能需要更多的东西。谢谢!!你救了我的命
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>${maven-failsafe-plugin.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>