Генерация отфильтрованных ресурсов из источников maven: выполнение jar

Я хотел бы создать JAR-файл для своего проекта, поэтому я включил плагин maven-source-plugin. Тем не менее, я также использую плагин фильтрации ресурсов, чтобы установить номер версии в файле свойств для моего проекта. Когда я создаю окончательный файл JAR, файл свойств был отфильтрован и версия установлена. Однако в источниках баночка все еще имеет нефильтрованное свойство. Я хотел бы, чтобы плагин источников также вызывал фильтрацию ресурсов. Как я могу это сделать?

Вот (часть) моего pom.xml

    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

    <sourceDirectory>src/main/java</sourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>${maven.compiler.source}</source>
                <target>${maven.compiler.target}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.7</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
                <execution>
                    <id>attach-sources</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

и вот файл свойств, который я хочу отфильтровать в

version = ${project.version}

РЕДАКТИРОВАТЬ

Для пояснения, корень моей проблемы в том, что у меня есть другой проект, который представляет собой проект GWT, созданный с использованием этой библиотеки. Частью требований проекта GWT является то, что исходный код также должен быть доступен для всего, что будет скомпилировано в клиентский javascript. Следовательно, этот проект содержит как скомпилированный jar, так и jar с исходниками в classpath.

Таким образом, теперь есть два файла свойств с одинаковым путем и именем пакета, один существует в скомпилированном jar, а другой в исходном jar.

Когда я пытаюсь прочитать этот файл, кажется, что он выбирает файл свойств из jar-кода источника, который не был отфильтрован.

1 ответ

Обычно вы бы использовали maven-source-plugin за это. Тем не менее, я вижу в его документации, что вы не можете удалить src/main/resources из его обработки, одновременно добавляя target/classes к его циклу обработки (что вам нужно сделать, чтобы выполнить задачу)

Поэтому я думаю, что вам лучше всего использовать конфигурацию maven-assembly-plugin.

Другие вопросы по тегам