2

Я пытаюсь переопределить каталог ресурсов по умолчанию (src/main/resources) при использовании maven-remote-resources-plugin. Однако указанное значение в приведенном ниже примере, похоже, не учитывается. Был бы признателен, если бы кто-нибудь мог дать мне несколько указателей.Использование maven-remote-resources-plugin и указание ресурсовDirectory

<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/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>my.resource.library</groupId> 
    <artifactId>resource-library</artifactId> 
    <version>1.0</version> 
    <name>ResourceLibrary</name> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-remote-resources-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>bundle</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <resourcesDirectory>${basedir}/common</resourcesDirectory> 
        <includes> 
         <include>**/*</include> 
        </includes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

EDIT: Я интересно, если это ошибка в плагине, так как я вижу следующее в выводе отладочной сборки, что предполагает, что его попытки использовать каталог правильный ресурсов. На выходе отладки ничего не значимо.

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-remote-resources-plugin:1.5:bundle' with basic configurator --> 
[DEBUG] (f) includes = [**/*] 
[DEBUG] (f) outputDirectory = C:\jit\workspace\ResourceLibrary\target\classes 
[DEBUG] (f) resourcesDirectory = C:\jit\workspace\ResourceLibrary\common 

EDIT: Я думаю, что это на самом деле может быть ошибка, так подняли: MRRESOURCES-96

+0

Не то, чтобы это причина, но ['basedir' устарел в пользу' project.basedir.'] (http: //maven.apache.org/components/ref/3-LATEST/maven-model-builder/# Model_Interpolation) –

+0

Вы пытались добавить расширение файла в '?' –

+0

@GeroldBroser спасибо за хэдз-ап на [project.basedir] (http: //maven.apache.org/components/ref/3-LATEST/maven-model-builder/#Model_Interpolation). Я только что попробовал следующие включения, но никто из них не работает: 'common.txt',' **/*. Txt', '* .txt'. –

ответ

2

Зачем вам нужен Maven-remote-ресурсы-плагин?

Если ваша цель - override the default resources directory, то вы можете использовать mvn resources:copy-resources, так как она более гибкая. Пример here.

Alternative

Вы также можете использовать resources цели при условии плагином ресурсов, а также указать ресурсы в блоке POM-файла. Пример here.


Редактировать

О мавена-дистанционные-ресурсы-плагин, см usage страницу:

Это будет запускать сканирование $ этого проекта BASEDIR/SRC каталог/главная/ресурсы и создайте файл манифеста $ basedir/target/classes/META-INF/maven/remote-resources.xml.

Это означает, что этот плагин создаст файл remote-resources.xml, но это не значит, что он скопирует ресурсы для вас.

Я создал пустой проект maven, используя вашу конфигурацию плагина, и фактически создал файл remote-resources.xml. Кроме того, он не копировал файлы в $ {basedir}/common

Для этого просто укажите ресурсы в разделе сборки. Пример:

<build> 
     <resources> 
      <resource> 
       <directory>${basedir}/common</directory> 
      </resource> 
      <resource> 
       <directory>${basedir}/src/main/resources</directory> 
      </resource> 
     </resources> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-remote-resources-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>bundle</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <resourcesDirectory>${basedir}/common</resourcesDirectory> 
        <includes> 
         <include>**/*</include> 
        </includes> 
       </configuration> 
      </plugin> 
     </plugins> 
</build> 
+0

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

+0

Цель [bundle] (http://maven.apache.org/plugins/maven-remote-resources-plugin/bundle-mojo.html) подразумевает, что плагин должен включать эти ресурсы: «Объедините ресурсы, которые следует рассматривать как удаленный ресурс ». –

+0

@JiteshVassa По умолчанию он ** включает ** ресурсы, он просто включает ресурсы в каталоге ** src/main/resources **, как указано в [обзор цели] (http://maven.apache.org/ плагинов/Maven-дистанционного-ресурсы-плагин /). Однако это поведение не связано с этим плагином как таковым. В вашем случае вы хотите, чтобы он включал ресурсы в '$ {basedir}/common', поэтому вам нужно добавить дополнительное поведение, используя так, как я представил. PS, некоторые плагины позволяют вам указывать ресурсы, которые вы хотите скопировать, например, копии ресурсов. Я думаю, что этого просто не получается. – kly

0

Kly прямо об этом не копируя ресурсы для вас (я извиняюсь, я еще не могу комментировать - не хватает репутации).

С целью «расслоения» вы создаете манифест, содержащий список включенных ресурсов. Этот манифест должен быть упакован в артефакт вместе с самими ресурсами, что произойдет только в вашем экземпляре, если вы также используете ресурсы копирования, чтобы поместить их в каталог target/classes.

Затем вы должны использовать цель «process» и перечислить свой комплект в любом другом проекте, из которого вы хотите использовать ресурсы.