Ho un progetto multimodulo, costruire con avvio a molla 1.1.7Primavera Boot MVC tra più moduli executeable vaso
La struttura è
+ parent
+ import
+ web
+ backend
mio modulo Parent comprenderà tipo di microservices, quello che voglio gestire dal mio genitore (dipendenze che cosa tutti usano) e così via. In import/backend c'è la mia logica di business batch, nel web c'è un'applicazione mvc, da cui posso iniziare il lavoro batch.
In Eclipse tutto funziona correttamente, posso avviare l'applicazione dal file Application.java e l'applicazione funziona.
Ora volevo eseguire quell'applicazione eseguendo il file jar eseguibile, ma ricevo il seguente messaggio di errore quando provo a partire dalla console.
java -jar application.jar
Kein Hauptmanifestattribut in application.jar
Il vaso è molto piccolo solo 5kb, non ho trovato alcun vasetti di 3 dipendenze del partito in pacchetto jar.
Il Pom di Web-Module è come segue:
<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 del modulo di importazione è:
<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>
E Pom di Parent è:
<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>
Se avete bisogno ulteriori informazioni si prega di chiedere. Spero che tu possa aiutarmi.
Grazie mille.
Il problema è che la classe dell'applicazione eseguibile deve trovarsi nel progetto principale non in un progetto secondario/importato. Potrebbe funzionare se si definisce esplicitamente la classe principale per il manifest quando viene creato il jar. –
Grazie per la risposta, era corretto, che le proprietà start-class non fossero impostate correttamente, l'ho risolto. Ma non mi ha aiutato con il mio problema. Uno degli strani problemi è che nessuna dipendenza configurata in Maven è nel mio file jar. Mancano tutti, incluso il mio modulo di backend non è nel mio barattolo quello che ho raccolto dal mio modulo web. Il risultato è che il mio barattolo ha una dimensione di 5 KB. –
Qual è il pom per 'bbsng-import-backend'? –