1 【数仓模块-工程搭建篇】
1.1 工程创建
![bce3e243b0e357d6c52e4722b3c85bdb.png](https://i-blog.csdnimg.cn/blog_migrate/94a551c39764822abd451fcd6c63b8e0.png)
![b46727d3e41b90a1f88d7577119da589.png](https://i-blog.csdnimg.cn/blog_migrate/81705b0243a1ec172c1111d3dcdc91e0.png)
创建一个父工程;
父工程中引入公共的依赖和插件;
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.doitedu</groupId>
<artifactId>data_tiger</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>dataware</module>
<module>userprofile</module>
<module>recommend</module>
<module>streamingprocess</module>
<module>common</module>
</modules>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.12</version>
</dependency>
</dependencies>
<pluginRepositories>
<pluginRepository>
<id>ali-plugin</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<build>
<plugins>
<!-- 指定编译java的插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- 指定编译scala的插件 -->
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
<configuration>
<args>
<arg>-dependencyfile</arg>
<arg>${project.build.directory}/.scala_dependencies</arg>
</args>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
然后在父工程中创建各个子工程;
![bd2fd3c7c4440cba4bd81cee514ed4e2.png](https://i-blog.csdnimg.cn/blog_migrate/d18d1cdf7389d91baab74605edadcedf.png)
编写demo代码,测试工程;
项目的码云git地址:
https://gitee.com/hunter_d/doyiee.gitgitee.com1.2 补充:maven扩展知识
父子工程:
父工程的pom中会包含module定义:
![83273aedf8cbbe071651d1936e13fad0.png](https://i-blog.csdnimg.cn/blog_migrate/58d86c29fc9bbdeb9b5a1755bf912631.png)
子工程的pom中会有parent定义:
![515c80eb6c3436d79189e499d7e5e91e.png](https://i-blog.csdnimg.cn/blog_migrate/da82e185ceb96eb3860d28b77e77e1b4.png)
依赖继承:
父工程中引入的依赖,所有子工程都会自动继承
![e78f9a47aa4ea762540ebdecaa060fd9.png](https://i-blog.csdnimg.cn/blog_migrate/17855051d370dfe06bbd76d72fc4bcba.png)
依赖管理:
父工程通过dependencyManagement声明依赖的相关属性(版本),但并不会真正引入依赖;
子工程在引入dependencyManagement所声明的依赖时,不需要指定版本,直接继承dependencyManagement中声明的版本!
![106bbda2c948da1c3d624289cbd130b1.png](https://i-blog.csdnimg.cn/blog_migrate/851e226ca1931f2a9427464d9fa2689d.png)
属性定义
通过properties标签可以声明自定义属性(属性名、属性值)
在pom中的别的地方就可以用${属性名}来引用属性的值!
![4fa9b33dd45a638f64343133edcf3a56.png](https://i-blog.csdnimg.cn/blog_migrate/debba528bd67c53eea5929ff5deab3af.jpeg)
传递依赖的排除
如果我们直接引入了依赖A/B/C,都有传递依赖D,而且对D依赖的版本各不相同!就有可能在运行时产生依赖冲突!可以通过排除掉一些传递依赖来避免冲突!
![691332804f74ef353f47d858ffa28b80.png](https://i-blog.csdnimg.cn/blog_migrate/108a03f125dd827f853bc52c577140a9.png)
1.3 拉取gitee上的项目
1.3.1 前提
机器上装好了git客户端
![20d92a9ac2e77db0d8b1a61922a01655.png](https://i-blog.csdnimg.cn/blog_migrate/8db7a4440fdc9b28434c238d80ae6050.png)
idea上的git插件,修改了git程序的本地安装目录
![8433f5a72bb18506d32d999a40024cfb.png](https://i-blog.csdnimg.cn/blog_migrate/e383513209b58bd560e8877472786914.png)
idea上装好了gitee插件,并配置了账号密码
![251420abd40aa0b36a67946d420a0d55.png](https://i-blog.csdnimg.cn/blog_migrate/edb47b7e7683edc88a3292a58dd4fbcc.png)
1.3.2 拉取
![d3eefff88ddfabec3f2703a7aaf592b5.png](https://i-blog.csdnimg.cn/blog_migrate/84deb102e9756c63fbd646dd18d76892.png)
![5e35a694ea503db7c85561d6d1c0f9e0.png](https://i-blog.csdnimg.cn/blog_migrate/3ab0baa2c032c69a0890b47845246bcd.png)
项目的git地址:
https://gitee.com/hunter_d/doit12_yiee.gitgitee.com以后,每当服务器上的项目有更新,本地可以通过pull命令来拉取、同步
![de5bf60741b665879cb715a980f08ec5.png](https://i-blog.csdnimg.cn/blog_migrate/b2017737587678af7ae74e6c12cc114e.png)