Maven не может собрать модуль
У меня есть трёх-модульный проект из client, server, common. Я собираю его с помощью maven. папка common собирается без каких либо ошибок. Я добавил её в локальный репозиторий (mvn clean install в папке common), так как у неё есть зависимости, которые должны быть видны классам, которые есть в client и server папках.
После этого я решил посмотреть видно ли классы из common на клиенте (заранее добавив common в dependencies у pom.xml) и да, всё, включая автодополнение работает.
Я решил попробовать собрать jar клиента, и по какой-то причине maven выдаёт ошибку.
PS C:\coding\itmo\Prog\lab6\client> mvn clean package
Active code page: 65001
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< ru.itmo.prog.lab6:client >----------------------
[INFO] Building client 1.0-SNAPSHOT
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.252 s
[INFO] Finished at: 2024-04-14T16:45:28+03:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project client: Could not resolve dependencies for project ru.itmo.prog.lab6:client:jar:1.0-SNAPSHOT: Failed to collect dependencies at ru.itmo.prog.lab6:common:jar:jar-with-dependencies:1.0-SNAPSHOT: Failed to read artifact descriptor for ru.itmo.prog.lab6:common:jar:jar-with-dependencies:1.0-SNAPSHOT: The following artifacts could not be resolved: ru.itmo.prog.lab6:lab6:pom:1.0-SNAPSHOT (absent): Could not find artifact ru.itmo.prog.lab6:lab6:pom:1.0-SNAPSHOT -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following
articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
вот 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>
<parent>
<groupId>ru.itmo.prog.lab6</groupId>
<artifactId>lab6</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>ru.itmo.prog.lab6</groupId>
<artifactId>client</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<archive>
<manifest>
<mainClass>ru.itmo.prog.lab6.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>ru.itmo.prog.lab6.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<sourcepath>src/main/java/ru/itmo/prog/lab6</sourcepath>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>ru.itmo.prog.lab6</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
<classifier>jar-with-dependencies</classifier>
</dependency>
</dependencies>
</project>
как я уже говорил, мне нужны зависимости у common (можно сказать что я использую его как библиотеку), поэтому я указал <classifier>jar-with-dependencies</classifier>
. Конечно, он также создан мною и добавлен в локальный репозиторий. Для ясности показываю pom у common:
<?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>
<parent>
<groupId>ru.itmo.prog.lab6</groupId>
<artifactId>lab6</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<packaging>jar</packaging>
<groupId>ru.itmo.prog.lab6</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>io.github.threeten-jaxb</groupId>
<artifactId>threeten-jaxb-core</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Попытки решить проблему: писал mvn dependency:purge-local-repository
в корневой папке проекта, затем попытался сделать mvn clean package -X
для отладки процесса. Вот какую ошибку я нашёл:
[DEBUG] =======================================================================
[DEBUG] Could not find metadata ru.itmo.prog.lab6:lab6:1.0-SNAPSHOT/maven-metadata.xml in local
(C:\Users\fedosss\.m2\repository)
[DEBUG] Resolving artifact ru.itmo.prog.lab6:lab6:pom:1.0-SNAPSHOT from [central (https://repo.maven.apache.org/maven2, default, releases)]
[DEBUG] Dependency collection stats {ConflictMarker.analyzeTime=528600, ConflictMarker.markTime=85500, ConflictMarker.nodeCount=2, ConflictIdSorter.graphTime=217300, ConflictIdSorter.topsortTime=211700, ConflictIdSorter.conflictIdCount=1, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=1934600, ConflictResolver.conflictItemCount=1, DfDependencyCollector.collectTime=15925700, DfDependencyCollector.transformTime=4370200}
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.312 s
[INFO] Finished at: 2024-04-14T16:56:59+03:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project client: Could not resolve dependencies for project ru.itmo.prog.lab6:client:jar:1.0-SNAPSHOT: Failed to collect dependencies at ru.itmo.prog.lab6:common:jar:jar-with-dependencies:1.0-SNAPSHOT: Failed to read artifact descriptor for ru.itmo.prog.lab6:common:jar:jar-with-dependencies:1.0-SNAPSHOT: The following artifacts could not be resolved: ru.itmo.prog.lab6:lab6:pom:1.0-SNAPSHOT (absent): Could not find artifact ru.itmo.prog.lab6:lab6:pom:1.0-SNAPSHOT -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project client: Could not resolve dependencies for project ru.itmo.prog.lab6:client:jar:1.0-SNAPSHOT: Failed to collect dependencies at ru.itmo.prog.lab6:common:jar:jar-with-dependencies:1.0-SNAPSHOT
После увиденного я побежал в локальный репозиторий .m2 проверять полученные джарники у common а на наличие манифестов, а так же maven-metadata в локальном репозитории.
- джарники содержат обычные манифесты, вроде как ничего необычного (в целом, дебаггер ругался не на это, но вдруг кому-то понадобится.
common-1.0-SNAPSHOT\META-INF\MANIFEST.MF:
Manifest-Version: 1.0
Created-By: Maven JAR Plugin 3.3.0
Build-Jdk-Spec: 17
common-1.0-SNAPSHOT-jar-with-dependencies\META-INF\MANIFEST.MF
Manifest-Version: 1.0
Created-By: Plexus Archiver 4.2.1
- Самих файлов
maven-metadata.xml
(именно с таким названием) не оказалось. но были два файлаmaven-metadata-local.xml
.
Вот тот, что находится в common
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>ru.itmo.prog.lab6</groupId>
<artifactId>common</artifactId>
<versioning>
<versions>
<version>1.0-SNAPSHOT</version>
</versions>
<lastUpdated>20240414135540</lastUpdated>
</versioning>
</metadata>
вот тот, что находится в common\1.0-SNAPSHOT
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
<groupId>ru.itmo.prog.lab6</groupId>
<artifactId>common</artifactId>
<versioning>
<lastUpdated>20240414135540</lastUpdated>
<snapshot>
<localCopy>true</localCopy>
</snapshot>
<snapshotVersions>
<snapshotVersion>
<extension>pom</extension>
<value>1.0-SNAPSHOT</value>
<updated>20240414135540</updated>
</snapshotVersion>
<snapshotVersion>
<extension>jar</extension>
<value>1.0-SNAPSHOT</value>
<updated>20240414135540</updated>
</snapshotVersion>
<snapshotVersion>
<classifier>jar-with-dependencies</classifier>
<extension>jar</extension>
<value>1.0-SNAPSHOT</value>
<updated>20240414135540</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
<version>1.0-SNAPSHOT</version>
</metadata>
Я слышал, что вроде как можно поменять то ли package то ли groupId у модулей, но сомневаюсь, что это поможет.
Также, хотел добавить, что в IntellijIDEA проект билдится и запускается без проблем. А в VSC выдается ошибка:
Exception in thread "main" java.lang.NoClassDefFoundError: ru/itmo/prog/lab6/CLI/Managers/InputHandler
где InputHandler
это как раз и есть класс из папки common.
Единственный вопрос это возможно что-то не так с файлом maven-metadata-local.xml, в связи с чем прошу умных пояснить всё ли с ним в порядке.
На этом у меня закончились мысли в чем может быть проблема, поэтому прошу помочь, ибо 3-й день бьюсь над этой проблемой и без понятия что делать. Если нужна доп. информация - сообщите.