2013-11-17 3 views
0

Я создал новый модуль maven, начиная с архетипа быстрого запуска Wicket. Pom выглядит так:Maven не помещает HTML правильно в WAR

<?xml version="1.0" encoding="UTF-8"?> 
<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>keeper</groupId> 
<artifactId>keeper</artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version> 
    <!-- TODO project name --> 
<name>quickstart</name> 
<description></description> 
<properties> 
    <wicket.version>6.12.0</wicket.version> 
    <jetty.version>7.6.13.v20130916</jetty.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
<dependencies> 
    <!-- WICKET DEPENDENCIES --> 
    <dependency> 
     <groupId>org.apache.wicket</groupId> 
     <artifactId>wicket-core</artifactId> 
     <version>${wicket.version}</version> 
    </dependency> 
    <!-- OPTIONAL DEPENDENCY 
    <dependency> 
     <groupId>org.apache.wicket</groupId> 
     <artifactId>wicket-extensions</artifactId> 
     <version>${wicket.version}</version> 
    </dependency> 
    --> 

    <!-- LOGGING DEPENDENCIES - LOG4J --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.4</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.16</version> 
    </dependency> 

    <!-- JUNIT DEPENDENCY FOR TESTING --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 

    <!-- JETTY DEPENDENCIES FOR TESTING --> 
    <dependency> 
     <groupId>org.eclipse.jetty.aggregate</groupId> 
     <artifactId>jetty-all-server</artifactId> 
     <version>${jetty.version}</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 
<build> 
    <resources> 
     <resource> 
      <filtering>false</filtering> 
      <directory>src/main/resources</directory> 
     </resource> 
     <resource> 
      <filtering>false</filtering> 
      <directory>src/main/java</directory> 
      <includes> 
       <include>**</include> 
      </includes> 
      <excludes> 
       <exclude>**/*.java</exclude> 
      </excludes> 
     </resource> 
    </resources> 
    <testResources> 
     <testResource> 
      <filtering>false</filtering> 
      <directory>src/test/resources</directory> 
     </testResource> 
     <testResource> 
      <filtering>false</filtering> 
      <directory>src/test/java</directory> 
      <includes> 
       <include>**</include> 
      </includes> 
      <excludes> 
       <exclude>**/*.java</exclude> 
      </excludes> 
     </testResource> 
    </testResources> 
    <plugins> 
     <plugin> 
      <inherited>true</inherited> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.5.1</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <encoding>UTF-8</encoding> 
       <showWarnings>true</showWarnings> 
       <showDeprecation>true</showDeprecation> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.9</version> 
      <configuration> 
       <downloadSources>true</downloadSources> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<repositories> 
    <repository> 
     <id>Apache Nexus</id> 
     <url>https://repository.apache.org/content/repositories/snapshots/</url> 
     <releases> 
      <enabled>false</enabled> 
     </releases> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
</project> 

Моя проблема в том, что Maven не поместил htML-файлы в WAR-файл. Если мое расположение файла HTML-файла: com.company.project.HomePage.html Я, тем не менее, что Maven поместит этот файл в com/company/project/ в папку классов WAR, а его в каталоге com.company.project (это полное имя). Поэтому, когда я начинаю страницу калитку в есть исключение:

Last cause: Can not determine Markup. Component is not yet connected to a parent. [Page class = pl.com.suadeo.keeperBrowser.HomePage, id = 2, render count = 1] 

Я пытался изменить местоположение в WebApplication конфигурации и изменения HTML местоположение, но эффект тот же:

@Override 
public void init() 
{ 
    super.init(); 

    // add your configuration here 
    this.getResourceSettings().getResourceFinders().add(new WebApplicationPath(this.getServletContext(), "pages")); 
} 

Учитывая выше настройки, HTMLs должны быть расположенный в папке WARs/pages (не внутри WEB-INF?). Почему существует проблема с упаковкой maven?

Сначала мои HTML-файлы были расположены рядом с соответствующей Java-классой (например, HomePage.java и HomePage.html в src.main.java.com.company.project). Затем, после изменения конфигурации калитки, я пытался поставить их в src.main.resources.pages, src.main.webapp.pages и src.main.webapp.WEB-INF.pages, но ничего не получалось

+0

Вы не сказали нам, где вы помещаете эти HTML-файлы в свой проект. –

+0

Да, извините, сделал обновление – kamil

ответ

1

Моего общим способа, как поместить файлы, чтобы использовать искатель по умолчанию ресурса разметки. Таким образом, это означает, что файлы разметки помещаются в исходные каталоги. Это означает, что код находится в src/main/java/com/company/project/MyPage.java, а связанная с ним разметка находится в файле src/main/java/com/company/project/MyPage.html.

Конфигурация Maven, чтобы включить разметку в JAR (также WAR) является:

SRC/основные/ресурсы /.java истинным SRC/основная/java / .java

<testResources> 
    <testResource> 
     <directory>src/test/java</directory> 
     <includes> 
      <include>**</include> 
     </includes> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
    </testResource> 
    <testResource> 
     <directory>src/test/resources</directory> 
     <includes> 
      <include>**</include> 
     </includes> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
    </testResource> 
</testResources> 

... 

0

Я положил HTML файлы в папке src/main/resources, а затем после иерархии пакетов. В вашем случае будет:

src/main/resources/comcompany/project/HomePage.html 

Так что, у меня есть Java и HTML-файлы разделены, но Maven будет объединить их вместе автоматически (без дополнительной настройки не требуется) при развертывании.

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