2010-02-25 4 views
5

Есть ли возможность создавать артефакт maven, который будет содержать только ресурсы, но не источники и которые могут быть повторно использованы другими проектами?Возможно ли проект ресурса многоразового использования maven?

Мотивация заключается в следующем. У меня есть библиотека, которая содержит только код html/css/javascript. Эта библиотека должна быть упакована в качестве ресурсов в военный проект. На данный момент я создаю веб-архив с ресурсами одним pom. Но могу ли я отделить код html/css/javascript в новом артефакте и повторно использовать его в нескольких военных проектах?

ответ

9

Использование Maven Overlays. Дополнительную информацию см. В разделе Manipulating WAR Overlays.

+1

@Pascal Thivent вы, кажется, знаете свой путь arround maven docs, его хорошо написанный, но плохо структурированный, если вы спросите меня ..есть ли ссылка, которая содержит всю документацию от a до z, может быть, я нахожу некоторые вещи, которые я могу использовать позже, может быть, даже сейчас, но я не знаю, что она существует .. +1 – ant

+0

Это все! Благодарю. –

+0

@ c0mrade Документация - это то, о чем люди часто жалуются, поэтому, я думаю, вы правы (информация там, но трудно найти, что именно вы говорите). К счастью, я знаю, где искать или что искать сейчас. Но есть несколько хороших книг, которые могут вам помочь, например http://www.sonatype.com/book/ (доступно в Интернете) или http://www.packtpub.com/apache-maven-2-effective-implementations/ книга. Настоятельно рекомендуется. –

1

Вы можете сделать это с помощью Maven assembly plugin.

+0

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

+0

@ Volodymyr Пожалуйста, ознакомьтесь с руководством пользователя, которое я связал, оно содержит примеры. Если у вас есть более конкретный вопрос, и расскажите нам больше о вашем проекте, мы сможем дать вам более конкретные ответы :-) –

+0

Насколько я понимаю, сборки дистрибутивов - это нечто окончательное, а не многоразовое. Не так ли? Если это так, они не подходят для того, чтобы делать то, что мне нужно. С maven-assembly-plugin я могу создать сборку для библиотеки ресурсов. В моем военном помпе я могу даже использовать этот артефакт в качестве зависимости. В таком случае я получаю target \ war-artifact-1.0 \ WEB-INF \ lib \ resource-artifact-1.0.jar вместо содержимого сборки распространения, распакованного в папку target \ war-artifact-1.0 \. В представленном руководстве я не нашел способа извлечь дистрибутив в корневой каталог веб-архива. –

0

Я не думаю, что maven помешало бы вам сотрясать несколько ресурсов вместе и добавить это как зависимость в ваш веб-проект.

Однако способ, которым вам нужно ссылаться на ресурсы, будет немного странным. Я не привык к загрузке стилей CSS в качестве java-ресурсов в файле jar в WEB-INF/lib.

Я хотел бы назвать их обычными веб-ресурсами относительно корня WAR-файла, а не через загрузчик классов.

+0

Да, мне не нужны ресурсы, которые нужно испортить. Мне нужно, чтобы они существовали в моей веб-папке и в веб-архиве, чтобы ссылаться на них статически, а не через загрузчик классов. –

0

Это довольно простая вещь для проверки:

$ ls -R 
.: 
pom.xml src 

./src: 
main 

./src/main: 
resources 

./src/main/resources: 
README.txt content-is-here.txt 

$ mvn package 
... Maven doing it's thing... 

$ unzip -l target/test-1.0-SNAPSHOT.jar 
Archive: target/test-1.0-SNAPSHOT.jar 
    Length  Date Time Name 
--------- ---------- ----- ---- 
     0 02-25-2010 16:18 META-INF/ 
     123 02-25-2010 16:18 META-INF/MANIFEST.MF 
     10 02-25-2010 16:18 content-is-here.txt 
     0 02-25-2010 16:18 README.txt 
     0 02-25-2010 16:18 META-INF/maven/ 
     0 02-25-2010 16:18 META-INF/maven/group/ 
     0 02-25-2010 16:18 META-INF/maven/group/test/ 
     626 02-25-2010 16:15 META-INF/maven/group/test/pom.xml 
     106 02-25-2010 16:18 META-INF/maven/group/test/pom.properties 
---------      ------- 
     865      9 files 
+0

Мне нужно иметь два проекта, а не один. Первый проект должен содержать ресурсы. Второй проект должен включать ресурсы от первого проекта в войну. –

+0

Тогда оверлей WAR - это то, что вы хотите –

+0

Да, теперь я вижу, что оверлеи именно то, что мне нужно. –

0

Это может быть сделан путем сотрясений артефакта ресурсов и распаковки его в SRC/основные/ресурсы в военном проекте во время validate фазы, например. П ресурсов тривиален, но война П будет содержать следующее:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>unpack</id> 
      <phase>validate</phase> 
      <goals> 
      <goal>unpack</goal> 
      </goals> 
      <configuration> 
      <artifactItems> 
       <artifactItem> 
        <groupId>my.company</groupId> 
        <artifactId>resource-artifact</artifactId> 
        <version>1.0</version> 
        <overWrite>true</overWrite> 
        <outputDirectory>src/main/resources</outputDirectory> 
       </artifactItem> 
      </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

 Смежные вопросы

  • Нет связанных вопросов^_^