maven配置多个源码目录分析

最近项目涉及到了多源码目录的问题,因为是用的maven管理项目,虽然maven可以配置源码目录,但是不支持多目录结构。如果要实现多源码目录,需要应用相应插件。

下面多maven的源码目录的配置进行简易分析。图1为项目结构。IDE使用的是eclipse。

新增forg的源码目录和prop的配置目录。默认配置的jar包

(jar包中没有 forg目录和prop.properties文件)

  1. maven配置指定源码目录,增加资源目录

maven有一套默认的目录结构,使用maven一般需要遵循此结构来组织项目,默认的配置结构说明文档

http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

maven可以在pom文件中修改默认的配置。官方的QA如下:

http://maven.apache.org/general.html#dir-struct

文中提及

By configuring <sourceDirectory>, <resources> and other elements of the <build> section

修改pom方法例子

1、修改默认的源码目录和修改资源文件

    <sourceDirectory>${project.basedir}/src/forg</sourceDirectory>
	    
	    <resources>
	        <resource>
			<directory>
			    ${project.basedir}/src/prop
			</directory>	     
			<includes>
			    <include>
			        **/*.properties
			    </include>
			</includes>       
	        </resource>
	        <resource>
	            <directory>
	                ${project.basedir}/src/main/resources
	            </directory>
	        </resource>
	    </resources>

修改后clean install的jar包

2.多源码目录配置

maven不支持多源码的配置,需要引用第三方插件Build Helper Maven Plugin 。当前此插件的版本是1.9.1.

配置方法:

<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
				<version>1.9.1</version>
				<executions>
					<execution>
						<id>add-source</id>
						<phase>generate-sources</phase>
						<goals>
							<goal>add-source</goal>
						</goals>
						<configuration>
							<sources>
								<source>${project.basedir}/src/forg</source>
							</sources>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>

配置后的jar包成功打入两个目录下的源码文件。

3.eclipse的m2e报错

maven打包是用的命令行。eclipse的m2e插件不支持上述配置,有报错。官方说明:

http://eclipse.org/m2e/documentation/m2e-execution-not-covered.html

官方也提供了解决方案,我选择了最后一种方案(配置lifecycleMappingMetadata):

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <goals>
                    <goal>add-source</goal>
                </goals>
                <versionRange>[0.0,)</versionRange>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>
        
    </pluginExecutions>
</lifecycleMappingMetadata>

reload配置之后错误消失。

附上maven官方文档地址(大多问题都能找到答案)

http://maven.apache.org/guides/index.html

时间: 2025-01-04 08:57:28

maven配置多个源码目录分析的相关文章

uboot移植——uboot源码目录分析

uboot移植(一)--uboot源码目录分析 本文分析的uboot是九鼎官方提供的,是对应s5pv210开发板x210bv3的uboot 一:uboot的概念及移植的原理. uboot就是在内核运行前的一段小程序,用来初始化硬件设备,建立内存空间映射图.从而将系统的软硬件带到合适的状态,主要功能就是为了启动内核,它将内核从flash中拷贝到ddr中,然后跳转到内核入口中,交由内核控制权,uboot严重依赖硬件,因此一个通用的uboot不太可能. 移植原理:uboot中有很多平行代码,各自属于各

转:《Linux设备驱动程序3》源码目录结构和源码分析经典链接

转自:http://blog.csdn.net/geng823/article/details/37567557 [原创][专栏]<Linux设备驱动程序>--- LDD3源码目录结构和源码分析经典链接 [专栏]Linux设备驱动程序学习(总目录) [专栏]LDD3源码分析链接(总目录) 1. LDD3源码分析之hello.c与Makefile模板 2. LDD3源码分析之字符设备驱动程序 其他错误: 我的Linux内核为 3.2.0-65-generic-pae,在scull目录下make时

Android——4.2.2 源码目录结构分析

最近公司要整android内部培训,分配给我写个培训文档,这里记录如下: 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/40897277#t17 导读: 关于的Android目录分析,网上有很多资料,在此不做全面介绍. 本文只简单介绍Android中我常涉及的到的一些目录与文件,文中都属个人观点,仅供参考-以google官方Android4.2.2源码为例. 各个厂商平台可能会有出入. 以android源码目录为"/"

Swift的源码目录结构 其中proxy是前端的业务接入进程

Swift的源码目录结构.其中proxy是前端的业务接入进程.account.container和object目录分别是账户.容器 和对象的业务处理逻辑进程.common目录是一些通用工具代码.common中比较重要的有:哈希环的处理逻辑.接下来会依次介绍各个进程的源码逻辑和 一些关键点机制. 各个业务进程或模块之间的逻辑关系可以参考文中的架构图. 二.Proxy进程的业务处理 首先需要掌握基于PasteDeploy的堆栈式WSGI架构.根据PasteDeploy定义的各个层,可以很快理清配置文

Mahout源码目录说明

Mahout源码目录说明 mahout项目是由多个子项目组成的,各子项目分别位于源码的不同目录下,下面对mahout的组成进行介绍: 1.mahout-core:核心程序模块,位于/core目录下: 2.mahout-math:在核心程序中使用的一些数据通用计算模块,位于/math目录下: 3.mahout-utils:在核心程序中使用的一些通用的工具性模块,位于/utils目录下: 上述三个部分是程序的主题,存储所有mahout项目的源码. 另外,mahout提供了样例程序,分别在taste-

嵌入式linux开发uboot移植(二)——uboot工程源码目录分析

嵌入式linux开发uboot移植(二)--uboot工程源码目录分析 本文分析的uboot为uboot_smdkv210,是三星官方发布的基于S5PV210评估开发板对应的uboot. 一.uboot源码目录结构解析 1.cpu 本文件夹下的子文件与处理器相关,每个文件夹代表一种CPU系列.每个子目录中都包括cpu.c.interrupts.c.start.S文件. cpu.c主要用于初始化CPU.设置指令Cache和数据Cache等 interrupt.c主要用于设置系统的各种中断和异常 s

uboot源码简要分析

uboot源码简要分析 一.uboot源码整体框架 源码解压以后,我们可以看到以下的文件和文件夹: cpu 与处理器相关的文件.每个子目录中都包括cpu.c和interrupt.c.start.S.u-boot.lds. cpu.c:初始化CPU.设置指令Cache和数据Cache等 interrupt.c:设置系统的各种中断和异常 start.S:是U-boot启动时执行的第一个文件,它主要做最早期的系统初始化,代码重定向和设置系统堆栈,为进入U-boot第二阶段的C程序奠定基础. u-boo

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML 定义的 Bean 信息转换为 Spring 框架的 Bean Definition 对象的处理过程,向读者展示了 Spring 框架的奥妙之处,可以加深开发人员对 Spring 框架的理解. 0 评论: 秦 天杰, 软件工程师, IBM China 2013 年 9 月 02 日 内容 在 IBM

2.15.1.linux内核源码目录结构1

2.15.1.1.源码从哪里来 (1)之前讲过,我们使用2.6.35.7版本的内核.这个版本的内核有三种:第一种是kernel.org上的官方版本,第二种是三星移植过的,第三种是九鼎X210的移植版本.我们讲课时使用第三种内核来讲解,后面的移植实验使用第二种内核来移植. (2)源码在开发板光盘中有.可以自己去linux下解压然后make distclean清理然后再次打包传输到windows下去解压分析:也可以直接去我网盘中下载我打包好的. (3)解压后最终在windows下得到了一个kerne