스프링부츠 MVC 멀티모듈 실행가능항아리
나는 스프링부츠 1.1.7로 빌드하는 멀티모듈 프로젝트가 있습니다.
구조는
+ parent
+ import
+ web
+ backend
부모 모듈에는 부모로부터 관리하고자 하는 마이크로 서비스(모든 사용자가 사용하는 종속성) 등이 포함됩니다.가져오기/백엔드에는 배치 비즈니스 로직이 있고, 웹에는 배치 작업을 시작할 수 있는 mvc 애플리케이션이 있습니다.
이클립스에서는 Application.java 파일에서 응용 프로그램을 시작하고 응용 프로그램이 작동합니다.
이제 실행 가능한 jar 파일을 실행하여 해당 응용 프로그램을 실행하고 싶었지만 콘솔에서 시작하려고 하면 다음 오류 메시지가 나타납니다.
java -jar application.jar
Kein Hauptmanifestattribut in application.jar
단지 5kb의 매우 작은 병입니다. 저는 병 패키지에서 3개의 당사자 의존성이 있는 병을 찾지 못했습니다.
웹 모듈의 폼은 다음과 같습니다.
<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>
가져오기 모듈의 폼:
<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>
그리고 부모의 폼은:
<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 를 참조하십시오.
따라서 재패키지 목표로 구성된 웹 모듈에는 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 파일로 포장되고 콘솔에서 시작할 수 있습니다.
같은 문제에 직면한 사람들에게 도움이 되길 바랍니다.
언급URL : https://stackoverflow.com/questions/26167874/spring-boot-mvc-multi-module-executeable-jar
'programing' 카테고리의 다른 글
docker-compose의 env-file 및 MariaDB (0) | 2023.07.22 |
---|---|
MariaDB에서 트랜잭션을 만들어 IP 블랙리스트의 만료 시간을 설정합니다. (0) | 2023.07.22 |
기존 테이블에 인덱스 생성 Oracle (0) | 2023.07.22 |
numpy.exp()는 정확히 무엇을 합니까? (0) | 2023.07.22 |
'WHERE' 절 sql에서 다른 값으로 폴백하는 방법은 무엇입니까? (0) | 2023.07.22 |