Câu hỏi spring-boot không có pom.xml cha mẹ không thể tạo ra bao bì chiến tranh


Tôi đã sử dụng ví dụ gs-convert-jar-to-war do spring-io cung cấp. Nó mô tả cách tạo bao bì chiến tranh trong một dự án khởi động mùa xuân.

Tài liệu khởi động mùa xuân cho phép sử dụng poms cha mẹ riêng, do đó bỏ qua pom cha mẹ được xác định trước cho tất cả các dự án khởi động mùa xuân. Phụ thuộc sau đây phải được thêm vào:

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.0.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Tôi đã áp dụng thay đổi này (và chỉ thay đổi này) cho ví dụ. Sau đó nó không thể tạo ra chiến tranh nữa. Tôi nhận được thông báo lỗi sau:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.1.1:war (default-war) on project gs-convert-jar-to-war: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]

Đây là danh sách đầy đủ của tệp pom.xml đã sửa đổi:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework-sample</groupId>
    <artifactId>gs-convert-jar-to-war</artifactId>
    <version>0.1.0</version>
    <packaging>war</packaging>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>1.0.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

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

    <properties>
        <start-class>hello.Application</start-class>
    </properties>

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

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>http://repo.spring.io/libs-milestone</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>http://repo.spring.io/libs-milestone</url>
        </pluginRepository>
    </pluginRepositories>

</project>

Có ý tưởng nào để khắc phục vấn đề không?

Trong dự án của tôi, tôi sẽ sử dụng pom cha mẹ của riêng tôi, bởi vì nó định nghĩa rất nhiều thứ liên quan đến công ty.


23
2018-04-16 15:44


gốc




Các câu trả lời:


Bạn đã xóa cha mẹ, vì vậy bạn đã mất tuyên bố cấu hình plugin của WAR. Đây là:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

Xem đây cho mã nguồn.

N.B. điều này là không cần thiết với Spring Boot 2.0 pom cha mẹ và ở trên (phiên bản plugin chiến tranh là khác nhau), hoặc nếu bạn sử dụng các plugin chiến tranh mới nhất.


58
2018-04-16 17:44



Cảm ơn gợi ý. Tôi đã thêm plugin bị thiếu, nhưng sau đó nó phàn nàn về thiếu tệp web.xml: Lỗi lắp ráp WAR: thuộc tính webxml là bắt buộc (hoặc WEB-INF / web.xml đã tồn tại trước đó nếu thực thi trong chế độ cập nhật). Nếu tôi cung cấp phụ huynh dựa trên khởi động mùa xuân, nó đang làm việc mà không có khai báo riêng của một tệp tin web.xml. - Matthias Brenner
Bạn phải quên thêm failOnMissingWebXml = false (theo câu trả lời ở trên)? - Dave Syer
Xin lỗi, nguyên nhân là ngu ngốc: Tôi đã sử dụng bao bì "chiến tranh" và maven-jar-plugin mà tôi đã thay thế bằng maven-war-plugin. Bây giờ nó đang làm việc. Cảm ơn bạn cho tipp. - Matthias Brenner
Bạn có thể vui lòng hướng dẫn về vấn đề này không stackoverflow.com/questions/39257275/… ? - Prateek
Đáng buồn là liên kết đã chết - dot_Sp0T