В основном у меня есть проект 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] ------------------------------------------------------------------------
Почему вы используете плагин загрузки Spring, целью которого является создание исполняемого файла jar для приложения загрузки Spring, содержащего загрузчик и все зависимости приложений, если ваша цель состоит именно в том, чтобы этого избежать и просто создать обычный файл jar?
Вы, кажется, неправильно поняли жизненный цикл сборки maven, если используете mvn clean compile package, потому что это приводит к многократному выполнению вещей, которые должны выполняться только один раз. Достаточно использовать mvn clean package .... и, конечно, пусть плагин spring-boot-maven-plugin выполняет свою работу, потому что он так задуман и выполняет свою работу очень хорошо.
@khmarbaise, даже если я использую пакет mvn clean и не удаляю плагин spring-boot-maven-plugin, я сталкиваюсь с той же проблемой, описанной в вопросе ... Он отлично работает, если я удалю этот плагин. Любые идеи?
@JBNizet Не знал об этом, спасибо, что поделился ... у вас есть статья по этому поводу?
Сгенерированный файл jar *.jar.original является файлом jar, если не были добавлены зависимости и т. д., А также стартер весенней загрузки. Другой файл, который генерируется *.jar, упакован плагином spring-boot-maven-plugin, который содержит стартер и все необходимые зависимости.




Плагин spring-boot-maven по умолчанию использует цель переупаковки, которая упаковывает все зависимости, упомянутые в файле pom. В этом случае файлы классов и ресурсов вашего проекта переименовываются в «оригинальные».
Пожалуйста, обратитесь к приведенной ниже документации для получения более подробной информации об этом плагине.
https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html
Да, это нормально работает, если я удалю его, спасибо, что поделились.
классы приложений должны быть там. вы пробовали вызвать файл jar с помощью
java -jar?