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 в локальном репозитории.

  1. джарники содержат обычные манифесты, вроде как ничего необычного (в целом, дебаггер ругался не на это, но вдруг кому-то понадобится.

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
  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-й день бьюсь над этой проблемой и без понятия что делать. Если нужна доп. информация - сообщите.


Ответы (0 шт):