Maven, jsp файлы в зависимости
Я использую maven2 для управления зависимостями. У меня есть один проект, который содержит некоторые файлы Java и некоторые файлы jsp и другой проект, веб-проект, который зависит от первого проекта. Как получить доступ к файлам jsp из веб-проекта?
Я вижу, что файлы jsp добавляются в 1-0-SNAPSHOT-sources.jar
, а не 1-0-SNAPSHOT.jar
(который добавляется как зависимость в веб-проектах pom.xml).
Ответы
Ответ 1
Я думаю, что правильный Maven-способ сделать это - разместить JSP файлы в вашем веб-проекте под /src/main/webapp. Если это по какой-то причине невозможно, вы можете использовать Maven Dependency Plugin для копирования необходимых файлов в ваш webapp. Или, если у вас есть проект WAR, вы можете использовать Overlay для копирования JSP файлов. Второй вариант (который я бы рекомендовал) выглядел бы примерно так:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<overlays>
<overlay>
<groupId>myGroupId</groupId>
<artifactId>myArtifactId</artifactId>
<type>jar</type>
<includes>
<include>**/*.jsp</include>
</includes>
<targetPath>WEB-INF/pages</targetPath>
</overlay>
</overlays>
</configuration>
</plugin>
</plugins>
</build>
Ответ 2
Проблема с этим решением заключается в том, что при разработке с Eclipse проект не обрабатывает оверлей. Таким образом, jsp недоступны.
Ответ 3
Я хотел, чтобы некоторые файлы из проекта JAR зависимости были включены в мой проект WEB.
Я сделал это так, чтобы иметь файлы не только при упаковке WAR, но также при запуске плагина контейнера сервлета maven (т.е. jetty: run или tomcat: run).
Итак, вот что сработало для меня:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>copy-files-to-webapp-directory</id>
<phase>compile</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.my.project</groupId>
<artifactId>my-amazing-project</artifactId>
<type>jar</type>
<overWrite>true</overWrite>
<outputDirectory>src/main/webapp</outputDirectory>
<includes>**/*.jsp, **/*.css, **/*.png</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
Надеюсь, что это поможет любому, кто ищет аналогичное решение