繁体   English   中英

如何从spring maven项目创建可执行文件?

[英]How do i create executable from spring maven project?

我使用Spring Tool Suite 4.我们有一个spring-boot API,我们想创建一个可执行文件(jar或war,没有线索,我需要哪一个)。 我们在pom.xml中声明了依赖项。 默认情况下,如果您创建一个干净的spring-boot应用程序,这就是我们正在构建的内容:

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

所以我的问题是什么,我必须添加,所以我可以实际执行maven install我的可执行文件? 截至目前,如果我运行maven install(这对我来说是我知道创建可执行文件的唯一方法),它会给我一个AssertionError。 我试图在网上找到指南,但没有一个能奏效。

现在我很高兴,如果我甚至可以设法执行maven安装,但我的计划包括在可执行文件之外的配置文件的使用我也想在jar文件旁边记录(log4j2),所以我需要帮助那些太。 如何在pom.xml中指定这些,以便我可以从外部使用配置文件并能够在外面登录?

你会想要一个可执行的jar。 将其添加到您的pom文件中:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
            <configuration>
                <classifier>spring-boot</classifier>
                <mainClass>
                  specify.your.main.Class
                </mainClass>
            </configuration>
        </execution>
    </executions>
</plugin>

所以我得到了AssertionError,因为出于某种原因,我的一些测试不适用于maven(即使我执行它们也会通过)。 如果罐子或战争真的很重要。 在我的情况下,它必须是一场战争,因为我正在创建一个API这里也是你必须在pom.xml中更改以便有机会创建可执行文件的最小值:(这在pom.xml中的依赖项之前)

<packaging>war</packaging>
<properties>
    <java.version>11</java.version>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <forceJavacCompilerUse>true</forceJavacCompilerUse>
</properties>

以下部分介于<build></build>

<pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>your.main.class</mainClass>
                    </manifest>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-remote-resources-plugin</artifactId>
                <version>1.6.0</version>
                <executions>
                    <execution>
                        <id>process-remote-resources</id>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>
                            <resourceBundles>
                                <resourceBundle>org.apache:apache-jar-resource-bundle:1.0</resourceBundle>
                            </resourceBundles>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </pluginManagement>

总而言之,我仍然不知道大多数这样做,但这是有效的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM