Подтвердить что ты не робот

Как настроить maven: корневой путь сборки в банке

Вот pom.xml

<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>org.springframework.webflow</groupId>
    <artifactId>spring-js-resources-thin</artifactId>
    <version>2.2.1.RELEASE</version>
    <name>Spring js lib</name>
    <description>Spring javascript library without dojo</description>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2.1</version>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

и здесь assembly.xml

<assembly>
    <id>js-jar</id>
    <formats>
        <format>jar</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>src/main/resources/</directory>  
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>META-INF/**/*</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

Проблема заключается в том, что каждый раз, когда я открываю сгенерированный файл jar (spring -js-resources-thin-2.2.1.RELEASE-js-jar.jar), корневая папка всегда называется artifactid-version (spring -js-resources-thin-2.2.1.RELEASE), затем META-INF.

Интересно, что в любом случае я могу создать файл jar с именем файла artifactid-version.jar, но БЕЗ artifactid-version в пути к классу, точно так же, как каждый jar в репозитории maven. Я думаю, что должен быть вариант или способ назвать <outputDirectory>.

4b9b3361

Ответ 1

Вы должны указать maven-assembly-plugin, чтобы он не включал базовый каталог в архив, который может быть достигнут, используя следующее:

<assembly>
    <id>js-jar</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>src/main/resources/</directory>  
            <outputDirectory>.</outputDirectory>
            <includes>
                <include>META-INF/**/*</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

И предложение об использовании maven-jar-plugin очень хорошо, потому что немного похоже, что вы неправильно используете maven-assembly-plugin.

В последних версиях maven-assembly-plugin вы должны . в качестве корневой папки. Если вы используете /, вы получите предупреждение.

Ответ 2

Добавьте элемент в сборку следующим образом.

<assembly>
    <id>js-jar</id>
    <formats>
        <format>jar</format>
    </formats>

    <baseDirectory>myBaseDir</baseDirectory>

    <fileSets>
        <fileSet>
            <directory>src/main/resources/</directory>  
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>META-INF/**/*</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

Если вы отключите <includeBaseDirectory>, тогда ваш архив не будет иметь никакого корня. Так что это зависит от того, чего вы хотите. Я предпочитаю, чтобы мои zip файлы, например, имели базовый каталог, чтобы он случайно не загрязнял каталог, если вы забыли создать каталог и компакт-диск в нем перед распаковкой. Гораздо удобнее.