Mvn clean package неправильно создает JAR-файл - PullRequest
0 голосов
/ 06 декабря 2018

примечание: я опробовал предложенные ответы в «возможных дублированных» вопросах, они, к сожалению, не помогли мне.Я немного отредактировал свой вопрос.

Я установил приложение Spring-Boot (которое может быть запущено из Spring Tool Suite IDE).Теперь я хотел собрать jar-файл и выполнить его.Что я пробовал:

cd %path_to_my_project_root%
mvn clean package
cd target
java -jar myApp.jar

Ошибка (переведена, возможно, неверная формулировка):

нет атрибута основного манифеста в myApp.jar

Я пробовал разные решения, предлагаемые на разных платформах (например, здесь и здесь ).Тем не менее, насколько я понял, это, кажется, проблема с моим POM.xml.

Мой Pom:

<?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>com.demo</groupId>
    <artifactId>myApp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>myApp</name>
    <description>desc</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-ldap</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.restdocs</groupId>
            <artifactId>spring-restdocs-mockmvc</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <type>jar</type>
        </dependency>
     </dependencies>

     <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>validate</phase>
                            <goals>
                                <goal>exec</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <executable>ng</executable>
                        <workingDirectory>src/main/ui</workingDirectory>
                        <argument>
                            <argument>build</argument>
                        </argument>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

Я посмотрел мой Manifest.MF и это было содержание:

Manifest-Version: 1.0
Implementation-Title: myApp
Implementation-Version: 0.0.1-SNAPSHOT
Built-By: me
Implementation-Vendor-Id: myPackage
Created-By: Apache Maven 3.6.0
Build-Jdk: 1.8.0_191
Implementation-URL: my_Url

Чего мне не хватает:

Я посмотрел файл jar, и было несколько вещейЯ заметил:

  • Мне не хватает .jar.original -файла
  • Нет аргументов Spring-Boot-Version, Main-Class, Start-Class и Boot-Inf в моем Manifest.MF
  • My jar содержит только три вещи: META-INF, com (классы, скомпилированные) и application.properties -файл.Там обычно намного больше вещей.

My Application.properties

spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://external.url/dbname?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=user
spring.datasource.password=pass

spring.jpa.database = MYSQL
spring.jpa.show-sql = true

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Я удалил тег <pluginManagement> в плагинах, и у меня не было проблем с его сборкой впоследствии.Я понятия не имею, что делает этот тег (что он не должен делать), но кажется, что это было причиной проблемы.Спасибо всем, кто пытался мне там помочь.

0 голосов
/ 06 декабря 2018

вам не хватает этого свойства maven:

<start-class>com.demo.MainClass</start-class>

(в нем должен быть ваш главный класс, который вызывает SpringApplication.run(..))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...