使用Maven运行Jetty时如何更改工作目录?

时间:2017-02-13 13:17:36

标签: maven jetty maven-jetty-plugin

我通过执行mvn jetty:run目标使用Maven运行Jetty服务器。在我的Java代码中,我使用java.io.File读取文件,但我现有的代码假定该进程在/war下的basedir目录中运行。

如何在使用Maven Jetty插件时设置工作目录?

详细说明: 这些文件不直接位于baseDirectory下,而是位于子目录下:具体而言,webapp目录,复制到${project.artifactId}-${project.version}下的目标文件夹

我希望每次定义文件时都不必添加目标路径来读取文件。

我可以使用读取文件。

File file = new File("target/myProject-myVersion/fileToRead.txt")

我只想这样做:

File file = new File("fileToRead.txt")

以下是项目结构。 (它是典型的Maven webapp结构。)

MyDir/
  [pom.xml]
  src/main/
    java/
      com.example.mycode/
        MyCode.java
    webapp/
      [fileToRead.txt]
      [index.html]
      [jsp.jsp]
      WEB-INF/
        [web.xml]

pom.xml我有:

             <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.3.7.v20160115</version>
                <configuration>
                    <webAppSourceDirectory>${project.basedir}/target/${project.artifactId}-${project.version}</webAppSourceDirectory>
                </configuration>
            </plugin>

1 个答案:

答案 0 :(得分:1)

使用ServletContext.getRealPath(String) API。

File file = new File(servletContext.getRealPath("/fileToRead.txt"));