Задать вопрос
  • Как указать Class-Path в MANIFEST.MF maven?

    @zelan
    Кратко обо мне не получится.
    <plugins>
    
            <!--Настройка компиляции проекта-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
    
                    <configuration>
    
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
    
    
                <!--Копирование зависимотей в папку lib/-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.8</version>
                    <configuration>
    
                        <!--Все зависимости которые нужны для работы твоего приложения будут лежать здесь-->
                        <outputDirectory>${project.build.directory}/lib/</outputDirectory>
                        <overWriteReleases>true</overWriteReleases>
                        <overWriteSnapshots>true</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
    
                    </configuration>
                    <executions>
                        <execution>
    
                            <id>copy-dependencies</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                        </execution>
    
                    </executions>
                </plugin>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.4</version>
    
                    <configuration>
                        <archive>
    
                            <!--Если надо конфигурировать манифест, то здесь-->
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <!--путь к зависимостям относительно запускаемого jar файла-->
                                <!--ВСЕ ЗАВИСИМОСТИ ДОЛЖНЫ БУДУТ ПОСТАВЛЯТЬСЯ С ТВОИМ jar приложением. -->
                                <classpathPrefix>lib/</classpathPrefix>
                                <classpathLayoutType>simple</classpathLayoutType>
    
                                <mainClass>main.Main</mainClass>
                            </manifest>
                            <!--<manifestEntries>-->
                            <!--<Rsrc-Class-Path>${}</Rsrc-Class-Path>-->
                            <!--</manifestEntries>-->
    
                        </archive>
                    </configuration>
                </plugin>
    
            </plugins>


    Мавен соберет jar файл, отредактирует манифест. Результатирующий jar будет лежать в папке target - надеюсь знаешь что это. Тамже будет лежать папка lib/ со всеми завимостями (другими jar файлами). Если взять результирующий jar и эту папку, и положить вместе в другую папку - то получится полноценный дистрибутив. Но это уже другой плагин. Со временем разберешься.

    В твоем варианте вообще все изначально не верно. В манифесте должны быть прописаны все используемые jar файлы. Старайся не лезть в манифейст вообще. А у тебя указан только /home/saveli/.m2/repository - там куча папок,с кучей версий jar, поэтому ничего и не находит.

    Третий плагин можно вообще убрать, но тогда все jаr файлы из папки target/lib/ должны лежать рядом с результирующим jar.
    Ответ написан
    1 комментарий