2013-12-26 3 views
0

Я создал простой webapp через maven 3.1.1. Я просто хочу разработать простой сервлет. Проделав чистую установку, я ожидал, что файлы классов сервлета будут находиться в целевом/WEB-INF/classes-Directory. Но были только скопированные исходные файлы.Источники Java вместо файлов классов в Maven Целевой каталог

Что я сделал не так?

Я не нашел заключение еще :(

---------- информационной системы

  • версии Maven: Apache Maven 3.1.1
  • Java версия: 1.7.0_40 OS
  • для Windows 8,1

---------- pom.xml

<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>de.mypage</groupId> 
<artifactId>ThirdServlet</artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>ThirdServlet Maven Webapp</name> 
<url>http://maven.apache.org</url> 
<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>6.0.37</version> 
    </dependency> 
</dependencies> 
<build> 
    <finalName>ThirdServlet</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <inherited>true</inherited> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

---------- Файл-Structure

  • SRC/главная/ресурсы/де/MyPage/сервлеты/MyServlet .java
  • SRC/основной/ресурсы/WebApp/index.jsp
  • SRC/основной/ресурсы/WebApp/WEB-INF/web.xml

---------- Мой Servlet

some imports 

public class MyServlet extends HttpServlet { 
private static final long serialVersionUID = 1L; 

/** 
* Default constructor. 
*/ 
public MyServlet() { 
    super(); 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    PrintWriter pw = response.getWriter(); 

    pw.println("<html>"); 
    pw.println("<body>"); 
    pw.println("<h2>"); 
    pw.println("If you can read this the servlet is running..."); 
    pw.println("</h2>"); 
    pw.println("</body>"); 
    pw.println("</html>"); 

    pw.close(); 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
} 

}

+0

Я забыл опубликовать веб-сервер: Это apache tomcat 7 –

ответ

2

Ваш код Java должен быть в src/main/java, а не в src/main/resources. Код Java компилируется, и ресурсы просто копируются. Это не пакеты, а определенные папки Maven.

После устранения этой проблемы вам может потребоваться упаковать войну и/или запустить ее с помощью плагина Maven tomcat. Цель `install 'означает развертывание в локальном репозитории Maven.

В Eclipse: In Eclipse

файлсистемы: On file system

+0

Я создал пакет src/main/java и поместил свой файл сервлета в Это. После чистой установки и копирования файла war-File в мой webapp-Directory результат все тот же. Maven просто копирует java-файл в WEB-INF/классы. –

+0

Это папки Maven. У вашего класса нет пакета, поскольку я предполагаю, что он находится в пакете по умолчанию. Я включил два изображения того, где ваш файл должен находиться в файловой системе, если он скомпилирован правильно. Не забудьте добавить зависимость javax.servlet от Maven pom. –

0

Я нашел рабочее решение для меня. Я просто добавил новый путь к существующему пути сборки в eclipse.

  1. Щелкните правой кнопкой мыши на мой проект
  2. Выберите Build Path> Configure Build Path
  3. Выберите "Источник" -Tab
  4. Добавить папку
  5. В диалоговом окне я должен выбрать расположение моего сервлетные файлы, в моем случае SRC/основные/ресурсы/де/MyPage/сервлеты
  6. После этого мне нужно изменить папку вывода SRC/основные/WebAPP/WEB-INF/классы

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

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