Как скопировать README.md в src/main/resources?

Я хочу показать README.md Файл, как страница справки в моем веб-приложении. Чтобы не создавать дубликаты, мне нужно скопировать mvn из пути проекта в ресурсы.

Как я могу это сделать?

Любая идея?

Я пытался:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.3</version>

    <configuration>
        <!-- this is important -->
        <overwrite>true</overwrite>
        <!-- target -->
        <outputDirectory>${basedir}/target/classes</outputDirectory>
        <resources>
            <resource>
                <!-- source -->
                <directory>/</directory>
                <include>
                    <filter>**/README.md</filter>
                </include>
            </resource>
        </resources>
    </configuration>
</plugin>

3 ответа

Решение

Самое простое решение - переместить соответствующий файл (ы) в src/main/resources Папка, тогда как второе решение может быть так:

  <build>
    <resources>
      <resource>
        <directory>${project.basedir}</directory>
        <includes>
          <include>README.md</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>

Нет необходимости настраивать плагин maven-resources. Это может быть обработано обычным жизненным циклом и обработкой ресурсов. Единственное, что вам может понадобиться - это папка, в которой README.md расположен. Если вам нравится фильтрация, вам нужно добавить <filtering>true</filtering> часть также.

Копирование чего-либо через Maven во время сборки в src/** В целом это плохая идея, потому что эти папки контролируются системами контроля версий, что приведет к незафиксированным изменениям, которые вам не нравятся.

Примечание. Было бы разумно проверить наличие последних версий плагинов (причина 2.3 - 2008!). Список текущих версий плагинов можно найти здесь: http://maven.apache.org/plugins/

Это работает для меня в одном из моих проектов:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.4.3</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <!-- when to execute copy operation -->
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <resources>
                    <resource>
                        <directory>${basedir}/pathTo.MD</directory>
                    </resource>
                </resources>
                <overwrite>true</overwrite>
                <outputDirectory>${project.build.directory}/${project.build.finalName}/classes</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

Я вижу, что у меня есть фаза и цель из вашей версии. Я также использовал переменные для выходного местоположения.

Я бы порекомендовал вам быть более равным этому примеру: http://maven.apache.org/plugins/maven-resources-plugin/examples/copy-resources.html С "более равным" я имею в виду как использование <executions> тег.

Вы можете, конечно, пропустить такие вещи, как <id> а также filtering,

Следующее работало хорошо для меня:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.7</version>
        <executions>
          <execution>
            <id>myID</id>
            <!-- here the phase you need -->
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/extra-resources</outputDirectory>
              <overwrite>true</overwrite>
              <resources>          
                <resource>
                  <directory>src</directory>
                  <!-- Details about filtering: http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html -->
                  <filtering>true</filtering>
                </resource>
              </resources>              
            </configuration>            
          </execution>
        </executions>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>
Другие вопросы по тегам