Eclipse web.xml丢失,并且<;failOnMissingWebXml>;设置为true';我无法使用配置文件

Eclipse web.xml丢失,并且<;failOnMissingWebXml>;设置为true';我无法使用配置文件,eclipse,spring-boot,maven,Eclipse,Spring Boot,Maven,我有一个springboot应用程序,它有一个双构建,本地(fatjar)和war(war) 我是这样处理的: <packaging>${application.packaging}</packaging> ... <profiles> <profile> <id>dev</id> <properties> <application.pack

我有一个springboot应用程序,它有一个双构建,本地(fatjar)和war(war)

我是这样处理的:

<packaging>${application.packaging}</packaging>
...

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <application.packaging>jar</application.packaging>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </profile>

    <profile>
        <id>war</id>
        <properties>
            <application.packaging>war</application.packaging>
        </properties>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.1.0</version>
                    <configuration>
                        <archive>
                            <manifest>
                                <addDefaultImplementationEntries>false</addDefaultImplementationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
${application.packaging}
...
发展
罐子
真的
org.springframework.boot
springbootmaven插件
战争
战争
org.apache.maven.plugins
maven战争插件
3.1.0
假的
奇怪的是,即使默认配置文件是dev,所以打包是jar,eclipse错误仍然会弹出。它似乎对我的身材没有任何影响,但我还是想摆脱它。
我如何才能做到这一点?

从您的个人资料中删除插件。只换包装

<packaging>${application.packaging}</packaging>

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>  

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <application.packaging>jar</application.packaging>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>

    <profile>
        <id>war</id>
        <properties>
            <application.packaging>war</application.packaging>
        </properties>       
    </profile>
</profiles>

这将构建一个既可执行又可部署的war文件。这一点在本文中也有解释。它有一整节是关于如何做到这一点的

哪里定义了
${application.packaging}
应用
spring boot maven plugin
只需更改包装即可。@JFMeier,正如您所见,它是在配置文件中定义的属性,这是jar for dev和war for ward将打包定义为
war
删除配置文件和maven war插件…正如一些人在这里已经提到的那样。@Phate否,我看不到您在哪里设置
${application.packaging}
的值。它在命令行上吗?或者在
部分?这正是我想要避免的,也是本主题的目的…为什么我应该为我的本地环境保留一个war构建插件?请阅读。。。删除那个插件,只留下spring启动插件。但这样它只能打败一个远震器…还是不行?不,不会。如前所述,我强烈建议不要构建两个不同的工件。只需在您的常规开发人员中构建war即可。您仍然可以执行它
java-jar my.war
。它既是可执行的,也是可部署的。
<packaging>war</packaging>

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</provided>
  </dependency>
</dependencies>

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>