Мы используем Maven 3, и я сталкиваюсь с проектом, который имеет JSP-файлы, а также использует «глобальные» JSP-файлы, хранящиеся в другом проекте.Это хорошо работает при использовании maven-war-plugin и webResources
.Все JSP-файлы попадают в WAR-файл.
Новая идея заключается в предварительной компиляции всех JSP-файлов.Очевидный выбор - использовать jspc-maven-plugin .Однако, это не включает внешние JSP, когда он компилирует локальные JSP проекта.
Вот фрагмент из pom.xml
:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jspc-maven-plugin</artifactId>
<executions>
<execution>
<id>jspc</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<warName>${pom.groupId}.${pom.artifactId}-0.0.1-SNAPSHOT</warName>
<webXml>${basedir}/target/jspweb.xml</webXml>
<webResources>
<resource>
<directory>../name.of.external.project/src/global/webapp</directory>
</resource>
</webResources>
</configuration>
</plugin>
Ошибка
[ERROR] Failed to execute goal org.codehaus.mojo:jspc-maven-plugin:1.4.6:compile (jspc) on project internal.project: JSPC Error: file:C:/workspace/name.of.internal.project/src/main/webapp/WEB-INF/views/show.jsp(2,0) File "/WEB-INF/views/../jspGlobal/jsp-declaration.jspf" not found -> [Help 1]
Директория jspGlobal
будет скопирована с вышеприведенной строкой <directory>../name.of.external.project/src/global/webapp</directory>
.
Чего не хватает для включения внешних JSP в JspC?
РЕДАКТИРОВАТЬ : Благодаря prunge's и Raghuram's input Я более подробно изучил источники и JavaDocs.Я заметил, что упомянутый sources
требует FileSet
, который НЕ допускает список каталогов.И поскольку sources
также не является списком, я не вижу шансов, как я могу указать более одного каталога JSP-источника.Я даже пытался скопировать элемент <plugin>
, но это не помогло.Моя текущая ситуация такова:
<plugin>
<groupId>org.codehaus.mojo.jspc</groupId>
<artifactId>jspc-maven-plugin</artifactId>
<version>2.0-alpha-3</version>
<executions>
<execution>
<id>jspc</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<sources>
<directory>${basedir}/../name.of.external.project/src/global/webapp</directory>
</sources>
<!-- the later mentioned <sources> gets picked
<sources>
<directory>${basedir}/src/main/webapp</directory>
</sources>
-->
<!-- 1.6 doesn't work!? Something lower than 1.5 seems to be the default -->
<source>1.5</source>
<target>1.5</target>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.mojo.jspc</groupId>
<artifactId>jspc-compiler-tomcat6</artifactId>
<version>2.0-alpha-3</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<warName>${pom.groupId}.${pom.artifactId}-0.0.1-SNAPSHOT</warName>
<webXml>${basedir}/target/jspweb.xml</webXml>
<webResources>
<resource>
<directory>../name.of.external.project/src/global/webapp</directory>
</resource>
</webResources>
</configuration>
</plugin>
Теперь внешние JSP скомпилированы в целевой путь текущего проекта.Теперь мне нужен способ для компиляции JSP текущего проекта.Как мне это сделать?
Кстати, если я переключаю <sources>
на строку для текущего проекта, я получаю ту же ошибку, что упоминалась ранее.