web. xml отсутствует, а для <failOnMissingWebXml>установлено значение true, не работает с профилями - PullRequest
1 голос
/ 30 марта 2020

У меня есть приложение весенней загрузки с двойной сборкой, local (fat jar) и 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>

Как ни странно, даже хотя профиль по умолчанию - dev, а упаковка - jar, ошибка eclipse по-прежнему появляется. Похоже, это не влияет на мою сборку, но я все еще хочу избавиться от нее. Как я могу это сделать?

1 Ответ

1 голос
/ 30 марта 2020

Удалите плагины из ваших профилей. Меняйте только упаковку.

<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>

Это все, что вам нужно. Не больше, не меньше. Плагин войны, используемый Spring Boot, уже более новый, который больше не требует web.xml.

Хотя я бы настоятельно рекомендовал против этого и использовать war в качестве упаковки для dev. Вы можете прекрасно выполнить war, как jar. Так что просто создайте 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>  

Это создаст файл войны, который может быть как исполняемым, так и развертываемым. Это все объясняется также в Spring Boot Documentation . Там есть целый раздел о том, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...