Maven: JspC должен использовать внешние JSP-файлы - PullRequest
5 голосов
/ 23 августа 2011

Мы используем 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> на строку для текущего проекта, я получаю ту же ошибку, что упоминалась ранее.

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Глядя на исходный код из CompilationMojoSupport , я вижу sources свойство типа FileSet.Вы можете настроить это в конфигурации плагина, чтобы добавить дополнительные исходные каталоги.Похоже, по умолчанию используется ${project.basedir}/src/main/webapp независимо от конфигурации плагина WAR.

1 голос
/ 23 августа 2011

Возможно, вы могли бы попробовать последнюю версию jspc-maven-plugin , то есть 2.0-alpha-3. Обратите внимание, что использование немного отличается от более ранней версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...