Maven: Включить файл, определенный в родительском POM? - PullRequest
3 голосов
/ 12 октября 2011

Я установил родительский POM для использования всеми моими проектами со стандартной конфигурацией.Я играл с maven-java-formatter-plugin и использую свой собственный файл конфигурации форматера.В родительском POM я настроил это:

    <build>
    ...
        <!-- Format the code during process-sources -->
        <plugin>
            <groupId>com.googlecode.maven-java-formatter-plugin</groupId>
            <artifactId>maven-java-formatter-plugin</artifactId>
            <version>${formatter.version}</version>
            <executions>
                <execution>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>format</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- Use plugin to compiler config vice those in formatter config 
                    file -->
                <overrideConfigCompilerVersion>true</overrideConfigCompilerVersion>
                <compilerSource>${jdk.version}</compilerSource>
                <compilerCompliance>${jdk.version}</compilerCompliance>
                <compilerTargetPlatform>${jdk.version}</compilerTargetPlatform>
                <!-- Use Unix line endings -->
                <lineEnding>LF</lineEnding>
                <!-- The formatter config file -->
                <configFile>${project.basedir}/formatter-config.xml</configFile>
            </configuration>
        </plugin>
    </plugins>
</build>

Но для этого необходимо, чтобы я включил formatter-config.xml в каждый проект.Что-то, что я хотел бы как-то сделать, это автоматически извлекать / копировать этот файл из какого-то известного местоположения (возможно, из другого проекта, единственная цель которого - сохранить этот файл) во все проекты автоматически во время фазы сборки.Я почти уверен, что есть способ сделать это, но я не могу найти правильные условия поиска.

РЕДАКТИРОВАТЬ (ответ на prunge)

Iпоместил файл конфигурации в отдельный проект (упакованный как jar) и добавил это как зависимость от моего родительского POM.Однако, когда я пытаюсь построить проект, который использует родительский POM, я получаю эту ошибку:

[ERROR] Failed to execute goal com.googlecode.maven-java-formatter-plugin:maven-java-formatter-plugin:0.3.1:format (default) on project TestServlet: Config file [eclipse/formatter-config.xml] cannot be found: Could not find resource 'eclipse/formatter-config.xml'. -> [Help 1]

Похоже, что файл formatter-config.xml не разрешается из classpath согласностраница плагина форматера, на которую вы ссылались.

Это то, что у меня есть;возможно, вы можете сказать мне, где я ошибся:

CodeFormatter (builds a jar)
|-- pom.xml
|-- src
|   `-- main
|       `-- resources
|           `-- eclipse
|               `-- formatter-config.xml

POM Parent такой же, как и выше, но добавил новую зависимость:

<groupId>my.company</groupId>
<artifactId>super-pom</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
....
<dependencies>
    <dependency>
        <groupId>my.company</groupId>
        <artifactId>code-formatter</artifactId>
        <version>1.0</version>
    </dependency>
</dependencies>
...

Нет изменений в POM проекта TestServlet;включает родительский POM:

<parent>
    <groupId>my.company</groupId>
    <artifactId>super-pom</artifactId>
    <version>1.0</version>
</parent>

1 Ответ

3 голосов
/ 12 октября 2011

См. Пример многомодульной конфигурации с сайта плагина.

По сути, вы создаете проект, в котором просто есть файл formatter-config.xml, строите и развертываете этот проект в своем хранилище,затем добавьте эту зависимость к самому плагину в родительском POM.

например

<plugin>
    <groupId>com.googlecode.maven-java-formatter-plugin</groupId>
    <artifactId>maven-java-formatter-plugin</artifactId>
    <version>${formatter.version}</version>
    <executions>
        <execution>
            <phase>process-resources</phase>
            <goals>
                <goal>format</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <!-- Use plugin to compiler config vice those in formatter config 
            file -->
        <overrideConfigCompilerVersion>true</overrideConfigCompilerVersion>
        <compilerSource>${jdk.version}</compilerSource>
        <compilerCompliance>${jdk.version}</compilerCompliance>
        <compilerTargetPlatform>${jdk.version}</compilerTargetPlatform>
        <!-- Use Unix line endings -->
        <lineEnding>LF</lineEnding>
        <!-- The formatter config file -->
        <configFile>eclipse/formatter-config.xml</configFile>
    </configuration>
    <dependencies>
      <dependency>
        <groupId>com.myorg.buildutils</groupId>
        <artifactId>my-eclipse-config</artifactId>
        <version>1.0</version>
      </dependency>
    </dependencies>
</plugin>

, где в вашем проекте buildutils файл formatter-config.xml будет помещенв каталог src / main / resources / eclipse /.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...