`
shuai1234
  • 浏览: 971661 次
  • 性别: 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下项目源文件夹及资源文件夹展现成这样(多了一个源文件夹): 
这里写图片描述
分享到:
评论

相关推荐

    apache-maven-3.8.4-bin.zip

    聚合用于管理多个相关项目,而继承则允许子项目共享父项目的配置,包括依赖、构建配置等。 总结来说,"apache-maven-3.8.4-bin.zip" 包含了Apache Maven的最新稳定版本,通过它,开发者可以利用Maven的强大功能进行...

    apache-maven-3.9.0-bin.tar.gz

    此外,Maven的聚合功能允许管理多个相关项目作为一个整体进行构建。 为了使用Maven,你需要将解压后的Maven目录添加到系统的PATH环境变量中,这样就可以在任何地方使用`mvn`命令了。一旦设置完成,你可以使用`mvn ...

    apache-maven-3.6.1-src.zip

    Maven 3.6.1是Maven的一个稳定版本,包含了多项改进和优化,旨在提高开发效率和项目的可维护性。 在描述中提到的"Maven项目对象模型"(POM),它是Maven的核心概念。POM是一个XML文件,包含了项目的基本信息,如...

    apache-maven-3.6.3-bin.tar.gz

    Maven有多个生命周期阶段,包括编译(compile)、测试(test)、打包(package)、验证(verify)、集成测试(integration-test)、系统测试(system-test)、部署(install)等。通过命令行执行`mvn &lt;phase&gt;`,可以...

    apache-maven-3.5.2 资源包以及配置方法

    2. **本地仓库配置**:Maven下载的依赖默认存储在用户家目录的`.m2`文件夹下的`repository`子目录。如果你需要更改这个位置,可以在`~/.m2/settings.xml`文件中修改`localRepository`元素。 3. **远程仓库配置**:...

    maven-apache-maven-3.5.3.zip

    在大型项目中,Maven支持多模块构建,一个父POM可以管理多个子模块,每个子模块有自己的POM,共享相同的构建配置。 **Maven的插件管理:** 在POM中定义插件及其配置,可以控制插件版本和执行目标。例如,使用`maven...

    apache-maven-3.6.0-bin

    这种方式使得开发人员能够利用已有的Maven二进制包,而无需通过Eclipse内置的Maven插件来管理Maven版本,特别适合那些需要特定Maven版本或者不想在Eclipse中安装多个Maven版本的开发者。 总结来说,"apache-maven-...

    Maven-3.2.5, 64位

    当项目依赖的多个库有共同的子依赖时,Maven会遵循“最接近原则”来选择合适的版本。同时,`&lt;dependencyManagement&gt;`部分可以用来统一管理多个模块间的依赖版本,避免版本混乱。 在实际开发中,我们还可以通过Maven...

    apache-maven-3.5.4-bin.zip

    一个父POM可以包含多个子模块,这样可以统一管理所有子项目的配置和依赖。 **9. Maven Archetypes** Maven Archetypes 是预先定义的项目模板,通过 `mvn archetype:generate` 命令可以快速创建符合特定规范的新项目...

    apache-maven-3.3.3

    - **conf**:配置文件夹,主要包含`settings.xml`,它是Maven的全局配置文件,可以设置本地仓库路径、镜像、用户特定的配置等。 - **lib**:存放Maven运行所需的库文件,包括Apache Commons Logging、Xerces、JAXB...

    apache-maven-3.5.4-bin.zip,本地maven库压缩包

    4. **配置Maven**:在用户目录下的 `.m2` 文件夹中创建或编辑 `settings.xml` 文件,可以自定义Maven的行为,如仓库位置、镜像配置等。默认的本地仓库路径可以在 `settings.xml` 中修改。 5. **使用Maven**:现在,...

    apache-maven-3.5.0.rar

    5. **多模块项目**:Maven支持多模块项目结构,一个大项目可以被拆分为多个子模块,每个模块都有自己的POM。这样可以更好地组织复杂的项目,每个模块都可以独立构建和测试。 6. **Maven仓库**:Maven中央仓库是存储...

    apache-maven-3.6.3-bin.zip

    7. **多模块项目**:Maven支持多模块项目结构,使得大型项目可以被组织成多个子项目,每个子项目都有自己的POM,同时在一个父POM中进行统一管理。 总结来说,Apache Maven 3.6.3是一个强大且广泛使用的构建工具,它...

    apache-maven-3.5.0

    6. **多模块项目**:对于大型项目,Maven支持多模块结构,一个父POM可以管理多个子模块,简化了大型项目中的依赖关系管理。 在`apache-maven-3.5.0`压缩包中,你将找到以下组件: - `bin`:包含Maven的可执行脚本...

    apache-maven-3.2.2 myeclipse 的安装配置(免积分的哦)

    - **配置环境变量**:为了使Maven在系统中可访问,你需要设置两个环境变量: - 新建环境变量`M2_HOME`,值设置为Maven的解压路径,即 `D:\JAVA\apache-maven-3.2.2`。 - 找到系统环境变量`Path`,在其末尾添加 `%...

    apache-maven-3.2.1.zip

    4. **多模块项目**:Maven 3.2.1能够轻松处理包含多个子项目的多模块工程,允许在单个命令下构建整个项目树。 5. **配置和定制**:Maven的配置可以通过POM.xml文件进行,允许开发者根据项目需求调整构建行为。在...

    gem-maven-plugin-0.28.1.zip

    这个文件夹很可能是解压后包含整个项目源码、测试文件、构建脚本和其他相关文档的根目录。开发者可以通过导入这些文件到他们的IDE(如Eclipse、IntelliJ IDEA或Visual Studio Code)中来编译和运行项目,或者进行二...

    apache-maven-3.5.3.rar

    **Maven的Setting.xml文件**是Maven的核心配置文件,位于用户的Maven安装目录下的conf文件夹中。在设置文件中,有两个主要部分值得关注:`localRepository` 和 `mirrors`。`localRepository` 指定了本地仓库的路径,...

    apache-maven-3.3.9

    6. **聚合与继承**:Maven支持项目间的聚合和继承关系,方便管理大型项目或多个相关模块。 在3.3.9这个版本中,用户可以使用`mvn clean install`命令来编译、测试和安装项目到本地仓库。此外,`mvn dependency:tree...

    maven-clover2-plugin-3.1.11.zip

    该项目的源代码位于压缩包内的"QMQP-Java-master"文件夹,包含了完整的项目结构,包括源代码、配置文件以及构建脚本等。 首先,QMQP-Java的核心功能体现在以下几个方面: 1. **连接管理**:客户端库提供了一套完善...

Global site tag (gtag.js) - Google Analytics