`
shuai1234
  • 浏览: 934678 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

maven--maven配置多个源文件夹

    博客分类:
  • java
阅读更多

需求

Maven 为我们提供了一致的项目目录配置(源文件夹、资源文件夹等),在自动构建项目时, Maven 会按照这个配置来执行操作(编译源文件、拷贝资源文件)。 
当 Maven 规约的默认配置不能够满足我们的需求时,我们就要动手修改项目的 Maven 配置,让我们的项目能够与 Maven 很好地协同工作。这里讨论的需求有:

  1. 配置多个源文件夹来管理我们项目的模块
  2. 配置多个资源文件夹来管理我们项目模块的资源文件
  3. 有些遗留代码的一些资源文件是放在源文件夹下的,为了不改变原有项目结构,我希望 Maven 能够从源文件夹下读取资源文件
  4. 我想将项目模块的源文件和资源文件放置在同一个文件夹下,以方便开发与维护

 

pom.xml

1. Maven 默认的源文件夹及资源文件夹配置

 

  1.  
    <build>
  2.  
    ...
  3.  
    < sourceDirectory > src/main/java </ sourceDirectory >
  4.  
    < testSourceDirectory > src/test/java </ testSourceDirectory >
  5.  
    < resources >
  6.  
    < resource >
  7.  
    < directory > src/main/resources </ directory >
  8.  
    </ resource >
  9.  
    </ resources >
  10.  
    < testResources >
  11.  
    < testResource >
  12.  
    < directory > src/test/resources </ directory >
  13.  
    </ testResource >
  14.  
    </ testResources >
  15.  
    ...
  16.  
    </build>

在 eclipse 下,项目源文件夹及资源文件夹展现成这样: 
这里写图片描述 
2. 配置多个资源文件夹 
从上面 Maven 的默认配置来看,源文件夹和测试源文件夹都只能配置一个,要配置多个源文件夹比较困难。这里我们先展示如何配置多个资源文件夹。 
有人会认为,在 eclipse 下将这些文件夹都设置为源文件夹不就 OK 了吗?其实不然, Maven 在构建的时候并不会去读取任何 IDE 的配置信息,所以他不会知道我们在 eclipse 下指定的源文件夹,也不会将这些源文件夹下的代码编译打包。

配置多个资源文件夹的代码:

  1.  
    <build>
  2.  
    ...
  3.  
    < resources >
  4.  
    < resource >
  5.  
    < directory > src/main/resources </ directory >
  6.  
    </ resource >
  7.  
    < resource >
  8.  
    < directory > src/labs/resources </ directory >
  9.  
    </ resource >
  10.  
    </ resources >
  11.  
    ...
  12.  
    </build>

配置好以后, IDE ( eclipse )不会识别我们的配置,我们需要更新项目的配置: 
这里写图片描述

更新后, 在 eclipse 下项目源文件夹及资源文件夹展现成这样(多了一个资源文件夹): 
这里写图片描述

3.配置读取源文件夹里的资源文件 
为了让 Maven 能够从源文件夹下读取资源文件(或将所有资源文件配置到源文件夹下),我们可以这样配置:

  1.  
    <build>
  2.  
    ...
  3.  
    < resources >
  4.  
    < resource >
  5.  
    < directory > src/main/resources </ directory >
  6.  
    </ resource >
  7.  
    < resource >
  8.  
    < directory > src/labs/resources </ directory >
  9.  
    </ resource >
  10.  
    < resource >
  11.  
    < directory > src/main/java </ directory >
  12.  
    < includes >
  13.  
    < include > **/*.hbm.xml </ include >
  14.  
    </ includes >
  15.  
    </ resource >
  16.  
    < resource >
  17.  
    < directory > src/labs/java </ directory >
  18.  
    < includes >
  19.  
    < include > **/*.hbm.xml </ include >
  20.  
    </ includes >
  21.  
    </ resource >
  22.  
    </ resources >
  23.  
    ...
  24.  
    </build>
  •  
  • 这样,不仅 src/main/resources 和 src/labs/resources 这两个目录下的文件会作为资源文件被打包, src/main/java 和 src/labs/java 目录下的所有 .hbm.xml 文件也都会作为资源文件被打包。否则, Maven 构建时不会打包这两个目录下的 .hbm.xml 文件,导致运行时因为找不到资源文件而抛异常。

4.配置多个源文件夹 
前面讲过, Maven 默认只支持一个源文件夹,为了给项目配置多个源文件夹,我们需要用到一个 Maven 插件,目的是在 Maven 构建生命周期内为项目添加源文件夹:

  1.  
    <build>
  2.  
    ...
  3.  
    <plugins>
  4.  
    ...
  5.  
    <!-- build-helper-maven-plugin, 设置多个源文件夹 -->
  6.  
    <plugin>
  7.  
    <groupId>org.codehaus.mojo</groupId>
  8.  
    <artifactId>build-helper-maven-plugin</artifactId>
  9.  
    <version>1.4</version>
  10.  
    <executions>
  11.  
    <execution>
  12.  
    <id>add-source</id>
  13.  
    <phase>generate-sources</phase>
  14.  
    <goals>
  15.  
    <goal>add-source</goal>
  16.  
    </goals>
  17.  
    <configuration>
  18.  
    <sources>
  19.  
    <source>${basedir}/src/labs/java</source>
  20.  
    <!-- 我们可以通过在这里添加多个source节点,来添加任意多个源文件夹 -->
  21.  
    </sources>
  22.  
    </configuration>
  23.  
    </execution>
  24.  
    </executions>
  25.  
    </plugin>
  26.  
    ...
  27.  
    </plugins>
  28.  
    ...
  29.  
    </build>
更新项目配置(操作同2.2)后,在eclipse下项目源文件夹及资源文件夹展现成这样(多了一个源文件夹): 
这里写图片描述
分享到:
评论

相关推荐

    eclipse-maven3-plugin Maven插件离线安装包

    1. 在你的 eclipse 安装的根目录下创建两个文件夹:links,plugins(名字可以随便取),我的这两个文件夹位于:path=D:/Development/eclipse-JavaEE/eclipse(作为参考,下面用到) 2. eclipse-maven3-plugin.7z ...

    maven-plugin-parameter-documenter-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-profile-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-toolchain-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-core-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    artifactor-maven-plugin:artifactor-maven-插件

    该插件将分析React器构建顺序,并将创建一个文件夹结构,其中包含来自React器内的一个或多个工件,它们的依赖关系的正确顺序。 目前,文件夹只是简单的数字,如 1、2、3 等。这意味着您可以完全按照给定的顺序 1、2...

    maven-plugin-registry-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-repository-metadata-2.2.1.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-reporting-api-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-plugin-descriptor-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-plugin-api-2.2.1.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-error-diagnostics-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-artifact-manager-2.2.1.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-model-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-settings-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-monitor-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-project-2.0.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    maven-artifact-2.2.1.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    fis-maven-plugin:百度fis maven插件

    如果你已经有了一个maven工程,那么你只需要改动一下pom.xml文件,增加一个.nodejs目录和一个package.json文件,就可以搞定啦,如果你已经下载了源码,那么找到fis-maven-plugin\src\it\fis-quic

    maven的优缺点 项目

    用maven创建一个ssm项目,每一层的代码分开,把一个项目拆解成多个项目 2.[今日包含笔记] maven介绍: Eclise: 缺点: Jar包: 版本管理,解决jar包冲突:删除老的jar包,保留新的jar包 不同的项目,jar包要复制一份;...

Global site tag (gtag.js) - Google Analytics