Maven генерирует фактический jar как .jar.original вместо файла .jar

В основном у меня есть проект Maven, и я пытаюсь создать банку своего проекта, используя mvn clean compile package через набор инструментов Spring, используя ниже pom.xml.

После выполнения команды я получаю 2 файла jar, сгенерированных в моей папке target - {имя-проекта} .jar и {имя-проекта} .jar.original

Файл .jar содержит Файлы классов Spring boot framework имеет этот содержание, в то время как файл .jar.original содержит фактические файлы классов моего приложения.

Снимок целевой папки

Я также пробовал использовать mvn clean install, но безуспешно. Более того, установлен только 1 файл, который для меня бесполезен, потому что он не содержит файлов class моего приложения, но содержит классы фреймворка Spring.

pom.xml

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

    <name>commonporject</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.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</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.ibm.db2.jcc</groupId>
            <artifactId>db2jcc4</artifactId>
            <version>10.1</version>
        </dependency>
        <!-- other dependencies -->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <compilerVersion>1.8</compilerVersion>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Console:

[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< com.commonporject:commonporject >----------------------
[INFO] Building commonporject 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ commonporject ---
[INFO] Deleting C:\Users\Aadil\Documents\workspace-spring-tool-suite-4-4.0.0.RELEASE\commonporject\target
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ commonporject ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ commonporject ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 6 source files to C:\Users\Aadil\Documents\workspace-spring-tool-suite-4-4.0.0.RELEASE\commonporject\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ commonporject ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ commonporject ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ commonporject ---
[INFO] Not copying test resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ commonporject ---
[INFO] Not compiling test sources
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ commonporject ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- maven-jar-plugin:3.1.0:jar (default-jar) @ commonporject ---
[INFO] Building jar: C:\Users\Aadil\Documents\workspace-spring-tool-suite-4-4.0.0.RELEASE\commonporject\target\commonporject-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.1.0.RELEASE:repackage (repackage) @ commonporject ---
[INFO] Replacing main artifact C:\Users\Aadil\Documents\workspace-spring-tool-suite-4-4.0.0.RELEASE\commonporject\target\commonporject-0.0.1-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.706 s
[INFO] Finished at: 2018-11-04T12:28:37+05:30
[INFO] ------------------------------------------------------------------------

классы приложений должны быть там. вы пробовали вызвать файл jar с помощью java -jar?

Sharon Ben Asher 04.11.2018 08:27

Почему вы используете плагин загрузки Spring, целью которого является создание исполняемого файла jar для приложения загрузки Spring, содержащего загрузчик и все зависимости приложений, если ваша цель состоит именно в том, чтобы этого избежать и просто создать обычный файл jar?

JB Nizet 04.11.2018 08:30

Вы, кажется, неправильно поняли жизненный цикл сборки maven, если используете mvn clean compile package, потому что это приводит к многократному выполнению вещей, которые должны выполняться только один раз. Достаточно использовать mvn clean package .... и, конечно, пусть плагин spring-boot-maven-plugin выполняет свою работу, потому что он так задуман и выполняет свою работу очень хорошо.

khmarbaise 04.11.2018 10:11

@khmarbaise, даже если я использую пакет mvn clean и не удаляю плагин spring-boot-maven-plugin, я сталкиваюсь с той же проблемой, описанной в вопросе ... Он отлично работает, если я удалю этот плагин. Любые идеи?

csfragstaa 04.11.2018 11:32

@JBNizet Не знал об этом, спасибо, что поделился ... у вас есть статья по этому поводу?

csfragstaa 04.11.2018 11:33

Сгенерированный файл jar *.jar.original является файлом jar, если не были добавлены зависимости и т. д., А также стартер весенней загрузки. Другой файл, который генерируется *.jar, упакован плагином spring-boot-maven-plugin, который содержит стартер и все необходимые зависимости.

khmarbaise 04.11.2018 17:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
7
7 070
1

Ответы 1

Плагин spring-boot-maven по умолчанию использует цель переупаковки, которая упаковывает все зависимости, упомянутые в файле pom. В этом случае файлы классов и ресурсов вашего проекта переименовываются в «оригинальные».

Пожалуйста, обратитесь к приведенной ниже документации для получения более подробной информации об этом плагине.

https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html

Да, это нормально работает, если я удалю его, спасибо, что поделились.

csfragstaa 04.11.2018 11:38

Другие вопросы по теме