使用maven使用非标准目录布局

时间:2011-01-05 11:53:54

标签: maven-2 maven-3

我正在尝试将maven应用于已经具有目录结构的现有项目。我从以前的问题中找到的所有内容如下:

Maven directory structure

但是,我的要求更详细。请参阅下面的目录结构:

 <root dir>
    |
    +--src-java
    |
    +--src-properties
    |
    +--WEB-INF

我知道我们可以有像

这样的东西
<build>
<sourceDirectory>src-java</sourceDirectory>
...
</build>

sourceDirectory仅适用于JAVA源代码,如果我没有记错的话。

对于上述结构,我如何在pom.xml中声明它?移动目录是我现在的最后一个选择。

3 个答案:

答案 0 :(得分:21)

我想你需要有类似下面的东西。

看到WEB-INF,我想你想要建立一场战争。 Maven war plugin这样做。您需要对此进行一些配置,因为文件夹结构是非标准的 - 例如,您可能需要使用webXml属性指定web.xml的位置。这些内容记录在usage page

<build>
    <sourceDirectory>src-java</sourceDirectory>
    ...
    <resources>
      <resource>
        <directory>src-properties</directory>
      </resource>
    </resources>
    ...
    <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <warSourceDirectory>WEB-INF</warSourceDirectory>
                    ...
                </configuration>
            </plugin>
     </plugins>
</build>

答案 1 :(得分:8)

您可以通过在pom中覆盖它们来更改Super POM中声明的默认目录结构。

例如,

<sourceDirectory>src-java</sourceDirectory>
<resources>
  <resource>
    <directory>src-properties</directory>
  </resource>
</resources>

Maven会将所有资源复制到jar文件中。如果要将jar-INF包含在jar中,最好将其移动到指定的资源目录中。否则你必须自己(用maven插件)将它复制到目标目录 - 我想。

答案 2 :(得分:1)

 <resources>
  <resource>
    <directory>${project.basedir}/src/main/resources</directory>
  </resource>

来自here