gpt4 book ai didi

java - Spring Boot MVC 多模块可执行jar

转载 作者:IT老高 更新时间:2023-10-28 13:56:34 26 4
gpt4 key购买 nike

我有一个多模块项目,使用 spring boot 1.1.7 构建

结构是

+ parent
+ import
+ web
+ backend

我的父模块将包括某种微服务,我想从我的父级管理什么(所有使用的依赖项)等等。在 import/backend 中有我的批处理业务逻辑,在 web 中有一个 mvc 应用程序,我可以从那里开始批处理作业。

在 Eclipse 中对我来说一切正常,我可以从 Application.java 文件启动应用程序并且应用程序正常工作。

现在我想通过执行可执行 jar 文件来执行该应用程序,但尝试从控制台启动时收到以下错误消息。

java -jar application.jar
Kein Hauptmanifestattribut in application.jar

jar非常小只有5kb,我在jar包中没有找到任何3方依赖的jar。

Web-Module的Pom如下:

    <project>

<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>at.company.bbsng</groupId>
<artifactId>bbsng-import</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>

<artifactId>bbsng-import-web</artifactId>
<name>bbsng-import-web</name>
<packaging>jar</packaging>

<properties>
<start-class>at.company.bbsng.dataimport.Application</start-class>
</properties>


<dependencies>

<!-- APPLICATION -->
<dependency>
<groupId>at.company.bbsng</groupId>
<artifactId>bbsng-import-backend</artifactId>
<version>${parent.version}</version>
</dependency>

<!-- SPRING ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

...


</dependencies>



<build>

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

</build>

</project>

导入模块的Pom是:

<project>

<parent>
<groupId>at.company.bbsng</groupId>
<artifactId>bbsng</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>

<artifactId>bbsng-import</artifactId>
<name>bbsng-import</name>
<packaging>pom</packaging>

<modules>
<module>backend</module>
<module>web</module>
</modules>

</project>

而 parent 的Pom是:

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>at.company.bbsng</groupId>
<artifactId>bbsng</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>bbsng</name>
<description>BBS Next Generation Application Prototype</description>

<properties>
<java-version>1.8</java-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.boot-version>1.1.7.RELEASE</org.springframework.boot-version>
</properties>

<modules>
<!-- <module>backend</module> -->
<!-- <module>business</module> -->
<module>import</module>
<!-- <module>infra</module> -->
<!-- <module>log</module> -->
<!-- <module>rest</module> -->
</modules>

<dependencyManagement>
<dependencies>

<!-- SPRING-BOOT ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<type>pom</type>
<version>${org.springframework.boot-version}</version>
<scope>import</scope>
</dependency>

<!-- JAVAX ... -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>

<!-- COMMONS ... -->

...

</dependencies>
</dependencyManagement>

<build>
<plugins>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.5</version>
<configuration>
<tagBase>
svn://svn.int.company.at/stmlf-repository/prototype/bbsng/tags
</tagBase>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
</configuration>
</plugin>
</plugins>

</build>

<profiles>
<profile>
<id>external</id>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*custom*</exclude>
<exclude>**/custom/*</exclude>
</excludes>
</resource>
</resources>
</build>
</profile>
</profiles>

</project>

如果您需要更多信息,请询问。希望你能帮助我。

非常感谢。

最佳答案

终于找到了解决办法。魔术关键字是repackage,见链接http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/maven-plugin/usage.html

所以我只需要在我的 web 模块中配置了重新打包目标的 spring-boot-maven-plugin:

<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>

然后所有的依赖都打包在可执行的jar文件中,并且可以从控制台启动。

我希望它对面临同样问题的人有所帮助。

关于java - Spring Boot MVC 多模块可执行jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26167874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com