Maven 框架结构知识总结
1、maven目录结构
| 目录 | 内容 |
| ${basedir} | 存放pom.xml和所有子目录 |
| ${basedir}/src/main/java | 项目Java代码 |
| ${basedir}/src/main/resources | 项目资源配置文件 |
| ${basedir}/src/test/java | 项目测试类,例:Junit |
| ${basedir}/src/test/resources | 测试使用的资源 |
注:修改默认仓库位置
- 打开maven?录 -> conf -> settings.xml
- 添加仓库位置配置 F:/m2/repository
- 注:仓库位置改为??本机的指定?录,"/"不要写反
- 更换阿?镜像,加快依赖下载
<mirrors> <mirror> <id>alimavenid> <name>aliyun mavenname> <url>http://maven.aliyun.com/nexus/content/groups/public/url> <mirrorOf>centralmirrorOf> mirror> mirrors>
2、pom.xml 文件内容解释(此处为超级pom 百度直接搜所即可看到)
注:如不理解自己pom文件中的元素,可以在下方的注释中找到相关内容
<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.0http://maven.apache.org/maven-v4_0_0.xsd"> <parent> <artifactId /> <groupId /> <version /> <relativePath /> parent> <modelVersion>4.0.0modelVersion> <groupId>asia.banseongroupId> <artifactId>testmavenartifactId> <packaging>jarpackaging> <version>1.0-SNAPSHOTversion> <name>banseon-mavenname> <url>http://www.baidu.com/banseonurl> <description>A maven project to study maven.description> <prerequisites> <maven /> prerequisites> <issueManagement> <system>jirasystem> <url>http://jira.baidu.com/banseonurl> issueManagement> <ciManagement> <system /> <url /> <notifiers> <notifier> <type /> <sendOnError /> <sendOnFailure /> <sendOnSuccess /> <sendOnWarning /> <address /> <configuration /> notifier> notifiers> ciManagement> <inceptionYear /> <mailingLists> <mailingList> <name>Demoname> <post>banseon@126.compost> <subscribe>banseon@126.comsubscribe> <unsubscribe>banseon@126.comunsubscribe> <archive>http:/hi.baidu.com/banseon/demo/dev/archive> mailingList> mailingLists> <developers> <developer> <id>HELLO WORLDid> <name>banseonname> <email>banseon@126.comemail> <url /> <roles> <role>Project Managerrole> <role>Architectrole> roles> <organization>demoorganization> <organizationUrl>http://hi.baidu.com/banseonorganizationUrl> <properties> <dept>Nodept> properties> <timezone>-5timezone> developer> developers> <contributors> <contributor> <name /> <email /> <url /> <organization /> <organizationUrl /> <roles /> <timezone /> <properties /> contributor> contributors> <licenses> <license> <name>Apache 2name> <url>http://www.baidu.com/banseon/LICENSE-2.0.txturl> <distribution>repodistribution> <comments>A business-friendly OSS licensecomments> license> licenses> <scm> <connection> scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk) connection> <developerConnection> scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk developerConnection> <tag /> <url>http://svn.baidu.com/banseonurl> scm> <organization> <name>demoname> <url>http://www.baidu.com/banseonurl> organization> <build> <sourceDirectory /> <scriptSourceDirectory /> <testSourceDirectory /> <outputDirectory /> <testOutputDirectory /> <extensions> <extension> <groupId /> <artifactId /> <version /> extension> extensions> <defaultGoal /> <resources> <resource> <targetPath /> <filtering /> <directory /> <includes /> <excludes /> resource> resources> <testResources> <testResource> <targetPath /> <filtering /> <directory /> <includes /> <excludes /> testResource> testResources> <directory /> <finalName /> <filters /> <pluginManagement> <plugins> <plugin> <groupId /> <artifactId /> <version /> <extensions /> <executions> <execution> <id /> <phase /> <goals /> <inherited /> <configuration /> execution> executions> <dependencies> <dependency> ...... dependency> dependencies> <inherited /> <configuration /> plugin> plugins> pluginManagement> <plugins> <plugin> <groupId /> <artifactId /> <version /> <extensions /> <executions> <execution> <id /> <phase /> <goals /> <inherited /> <configuration /> execution> executions> <dependencies> <dependency> ...... dependency> dependencies> <goals /> <inherited /> <configuration /> plugin> plugins> build> <profiles> <profile> <id /> <activation> <activeByDefault /> <jdk /> <os> <name>Windows XPname> <family>Windowsfamily> <arch>x86arch> <version>5.1.2600version> os> <property> <name>mavenVersionname> <value>2.0.3value> property> <file> <exists>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ exists> <missing>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ missing> file> activation> <build> <defaultGoal /> <resources> <resource> <targetPath /> <filtering /> <directory /> <includes /> <excludes /> resource> resources> <testResources> <testResource> <targetPath /> <filtering /> <directory /> <includes /> <excludes /> testResource> testResources> <directory /> <finalName /> <filters /> <pluginManagement> <plugins> <plugin> <groupId /> <artifactId /> <version /> <extensions /> <executions> <execution> <id /> <phase /> <goals /> <inherited /> <configuration /> execution> executions> <dependencies> <dependency> ...... dependency> dependencies> <goals /> <inherited /> <configuration /> plugin> plugins> pluginManagement> <plugins> <plugin> <groupId /> <artifactId /> <version /> <extensions /> <executions> <execution> <id /> <phase /> <goals /> <inherited /> <configuration /> execution> executions> <dependencies> <dependency> ...... dependency> dependencies> <goals /> <inherited /> <configuration /> plugin> plugins> build> <modules /> <repositories> <repository> <releases> <enabled /> <updatePolicy /> <checksumPolicy /> releases> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> snapshots> <id /> <name /> <url /> <layout /> repository> repositories> <pluginRepositories> <pluginRepository> <releases> <enabled /> <updatePolicy /> <checksumPolicy /> releases> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> snapshots> <id /> <name /> <url /> <layout /> pluginRepository> pluginRepositories> <dependencies> <dependency> ...... dependency> dependencies> <reports /> <reporting> ...... reporting> <dependencyManagement> <dependencies> <dependency> ...... dependency> dependencies> dependencyManagement> <distributionManagement> ...... distributionManagement> <properties /> profile> profiles> <modules /> <repositories> <repository> <releases> <enabled /> <updatePolicy /> <checksumPolicy /> releases> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> snapshots> <id>banseon-repository-proxyid> <name>banseon-repository-proxyname> <url>http://192.168.1.169:9999/repository/url> <layout>defaultlayout> repository> repositories> <pluginRepositories> <pluginRepository> ...... pluginRepository> pluginRepositories> <dependencies> <dependency> <groupId>org.apache.mavengroupId> <artifactId>maven-artifactartifactId> <version>3.8.1version> <type>jartype> <classifier>classifier> <scope>testscope> <systemPath>systemPath> <exclusions> <exclusion> <artifactId>spring-coreartifactId> <groupId>org.springframeworkgroupId> exclusion> exclusions> <optional>trueoptional> dependency> dependencies> <reports>reports> <reporting> <excludeDefaults /> <outputDirectory /> <plugins> <plugin> <groupId /> <artifactId /> <version /> <inherited /> <configuration /> <reportSets> <reportSet> <id /> <configuration /> <inherited /> <reports /> reportSet> reportSets> plugin> plugins> reporting> <dependencyManagement> <dependencies> <dependency> ...... dependency> dependencies> dependencyManagement> <distributionManagement> <repository> <uniqueVersion /> <id>banseon-maven2id> <name>banseon maven2name> <url>file://${basedir}/target/deployurl> <layout /> repository> <snapshotRepository> <uniqueVersion /> <id>banseon-maven2id> <name>Banseon-maven2 Snapshot Repositoryname> <url>scp://svn.baidu.com/banseon:/usr/local/maven-snapshoturl> <layout /> snapshotRepository> <site> <id>banseon-siteid> <name>business api websitename> <url> scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web url> site> <downloadUrl /> <relocation> <groupId /> <artifactId /> <version /> <message /> relocation> <status /> distributionManagement> <properties /> project>
3、maven常用dos命令
| 命令 | 描述 |
| mvn –version | 显示版本信息 |
| mvn clean | 清理项??产的临时?件,?般是模块下的target?录 |
| mvn compile | 编译源代码,?般编译模块下的src/main/java?录 |
| mvn package | 项?打包?具,会在模块下的target?录?成jar或war等?件 |
| mvn test | 测试命令,或执?src/test/java/下junit的测试?例 |
| mvn install | 将打包的jar/war?件复制到你的本地仓库中,供其他模块使? |
| mvn deploy | 将打包的?件发布到远程参考,提供其他?员进?下载依赖 |
| mvn site | ?成项?相关信息的?站 |
| mvn eclipse:eclipse | 将项?转化为Eclipse项? |
| mvn dependency:tree | 打印出项?的整个依赖树 |
| mvn archetype:generate | 创建Maven的普通java项? |
| mvn tomcat7:run | 在tomcat容器中运?web应? |
| mvn jetty:run | 调? Jetty 插件的 Run ?标在 Jetty Servlet 容器中启动 web 应? |
注意:运?maven命令的时候,?先需要定位到maven项?的?录,也就是项?的pom.xml?件所在的? 录。否则,必以通过参数来指定项?的?录。
4、上述命令相关参数
-D 传?属性参数:
例如:
mvn package -Dmaven.test.skip=true 以 -D 开头,
将 maven.test.skip 的值设为 true ,就是告诉maven打包的时候跳过单元测试。
同理,mvn deploy-Dmaven.test.skip=true 代表部署项?并跳过单元测试
-P 使?指定的Profile配置
例如:
项?开发需要有多个环境,?般为开发,测试,预发,正式4个环境,在pom.xml中的配置如下:
profiles 定义了各个环境的变量 id , filters 中定义了变量配置?件的地址,其中地址中的环境 变量就是上? profile 中定义的值, resources 中是定义哪些?录下的?件会被配置?件中定义的变量替换
5、扩展插件
Jetty是什么 Jetty项目简介
Jetty是一个开源、基于标准、全功能实现的JAVA服务器。它在Apache2.0协议下发布,因此可以自由的用于商业用途和发行。首创于1995年,Jetty受益于一个广大的用户社区,有一个稳定的核心开发者来持续专著的开发。有很多正在运行的使用Jetty的例子,这也不过是千分之十的Jetty实例。 虽然Jetty的目标很低调, 无数的站点和产品使用Jetty,但是Jetty无处不见!
Jetty可以用来:
◆一个传统的web 服务器来处理静态和动态网页;
◆最为一个专用HTTP服务器的后台来处理动态网页,就像Apache使用mod_proxy;
◆作为一个JAVA应用程序的内嵌组件。
这种灵活性意味着Jetty可以用在多种场合:
◆随产品做外盒使用,例如Tapestry, Liferay;
◆随书光盘里,用来运行例子;
◆合并到程序里提供HTTP传输,例如JXTA, MX4J;
◆集成到JavaEE服务器作为web容器,例如JOnAS, Geronimo, JBoss, JFox;
◆作为一个应用程序的组件,例如Continuum, FishEye, Maven。
Jetty的特点:
简单
Jetty的指导原则是“简单不复杂“。Jetty容易理解和使用:
◆通过API或者XML文件配置;
◆XML文件语法直接了当地在POJOs上影射API操作;
◆默认的配置文件可以使Jetty作为外盒(out-of-the-box);
◆只需少量的行数就可以嵌入一个Jetty实例。
可扩展性
在异步的WEB2.0类型的应用程序使用的技术,例如AJAX,连接停留时间要比处理一个静态页长,线程和内存需求可能急剧增长。
底层必须优雅地处理这些问题,一个低速的数据库连接可能造成站点瘫痪,因为线程被占满了。使用Jetty...
◆在高强度服务压力性能损失少;
◆在现有的web规范的框架下,能处理大用户负载,保证长时间会话的连续性;
◆整合现有聚类,例如WADI和Terracotta
高效
大量的努力用来优化代码,精炼的代码以至于漏洞尽可能少:
◆相关性尽可能少;
◆核心保持最小,附加函数放在可选包中;
◆可扩展性是一个关键问题;
◆高强度下性能衰减平缓。
嵌入性
Jetty是一个非常好的组件。这意味着很容易嵌入到一个应用程序中,而不需要应用程序去适应它:
◆使用依赖注射和反转的控制模式
插入性
Jetty被建构的适合
Jetty内建插入性。所有Jetty核心组件的实现允许不同的选择,至少一个或者更多,组件的实现总是会提供的。如果这些仍然不能满足你的要求,你可以自由的编写底层接口和抽象类最为基础。这意味着Jetty能够容易地用在一个特别的应用环境中。当Jetty在一个 JavaEE服务器中作为web容器时,这是相当有用的,Jetty的插入性保证了它和主机容器的一个紧密的集成。
未完
本人学习视频源:
https://www.bilibili.com/video/BV1Fz4y167p5?spm_id_from=333.999.0.0