Java源代替Maven目标目录中的类文件

时间:2013-12-26 13:11:44

标签: java maven servlets

我通过maven 3.1.1创建了一个简单的webapp。我只是想开发一个简单的servlet。在进行全新安装之后,我期望在目标/ WEB-INF / classes-Directory中使用servlet的类文件。但是只有复制的源文件。

我做错了什么?

我还没有找到任何结论:(

---------- 系统信息

  • 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>

---------- 文件结构

  • 的src /主/资源/ DE /我的空间/ servlet的/ MyServlet.java
  • 的src /主/资源/ web应用/ index.jsp的
  • 的src /主/资源/ web应用/ 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
}

}

2 个答案:

答案 0 :(得分:2)

您的Java代码应位于src/main/java而不是src/main/resources。编译Java代码并仅复制资源。这些不是包,而是Maven定义的文件夹。

解决此问题后,您可能需要打包war和/或使用Maven tomcat插件运行它。目标“安装”意味着部署到本地Maven存储库。

在Eclipse中: In Eclipse

在文件系统上: On file system

答案 1 :(得分:0)

我为我找到了一个有效的解决方案。我刚刚在eclipse中为现有的构建路径添加了一条新路径。

  1. 右键单击我的项目
  2. 选择构建路径&gt;配置构建路径
  3. 选择“来源”-Tab
  4. 添加文件夹
  5. 在对话框中我必须选择我的servlet文件的位置,在我的例子中是src / main / resources / de / mypage / servlets
  6. 之后我需要将输出文件夹编辑为src / main / webapp / WEB-INF / classes
  7. 我认为这不是完美的方式 - 特别是从maven的角度来看。但它正在发挥作用,我将深入研究maven架构......