除此之外坐标、依赖与仓库之外,Maven的另外两独基本概念是生命周期和插件。在关于Maven的普通行使受到,命令行的输入往往就对准许了生命周期,如mvn
package就代表执行默认生命周期阶段package。Maven的生命周期是空泛的,其实际行为都由插件来好,如package阶段的天职或就是会见出于maven-jar-plugin完成。生命周期和插件两者协同工作,密不可分。

18:验证子串

  • 查看
  • 提交
  • 统计
  • 提问

毕竟时限定: 
1000ms

内存限制: 
65536kB

描述
输入两个字符串,验证其中一个串是否也其他一个差的子串。

输入
输入两个字符串, 每个字符串占一尽,长度不跳200还非分包空格。

输出
苟首先个串s1凡是第二单失误s2的子串,则输出(s1) is substring of (s2) 
不然,若第二个错s2凡是首先个串s1之子串,输出(s2) is substring of (s1) 
否则,输出 No substring。

样例输入
abc
dddncabca

样例输出
abc is substring of dddncabca

来源
JerryCircle[Java 语言程序设计]

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 string a,b,c;
 5 int main()
 6 {
 7     cin>>a>>b;
 8     if(a.find(b)!=-1)
 9     cout<<b<<" is substring of "<<a;
10     else if(b.find(a)!=-1)
11     cout<<a<<" is substring of "<<b;
12     else cout<<"No substring";
13     return 0;
14 } 

 

 

1.Maven生命周期

 

咱俩在开品种之时光,我们不停地于更编译、测试、打包、部署等过程,maven的生命周期就是针对富有这些过程的一个虚幻和合,她底生命周期包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成等几有的历程,而且maven的生命周期是会同灵活,她生命周期的每个阶段是通过插件来兑现的,maven也放了众多插件,所以我们于品种开展编译、测试、打包之长河是绝非发到。像编译是通过maven-compile-plugin实现之、测试是经过maven-surefire-plugin实现之。

 

Maven有三仿相互独立的生命周期,请留意这里说的凡“三学”,而且“相互独立”,初家容易用Maven的生命周期看成一个整,其实不然。这三拟生命周期分别是:

  • Clean Lifecycle  以进展真正的构建之前开展一些清理工作。
  • Default Lifecycle  构建的为主组成部分,编译,测试,打包,部署等等。
  • Site Lifecycle  生成项目报告,站点,发布站点。

自身又强调一下其是相独立的,你可但调用clean来清理工作目录,仅仅调用site来生成站点。当然你吧足以直接运行 mvn clean install
site
运转具有这三仿照生命周期。

 

接头了每套生命周期的大约用及相互关系以后,来挨家挨户个详细看一下每套生命周期,Clean和Site相对比较简单,先解释一下:

每套生命周期都出于同组等(Phase)组成,我们平素以指令执行输入的下令总会对应于一个特定的级差。比如,运行mvn clean,这个的clean是Clean生命周期的一个号。有硌绕?要明白有Clean生命周期,也生clean阶段。

Clean生命周期一共包含了三独阶段:

  • pre-clean  执行有急需在clean之前完成的办事。
  • clean  移除所有上同一糟糕构建转变的公文。
  • post-clean  执行有需以clean之后马上就的行事。

mvn
clean
着之clean就是面的clean,在一个生命周期中,运行有阶段的时候,它之前的装有阶段都见面为周转,也就是说,mvn clean等同于 mvn pre-clean
clean
,如果我们运行 mvn post-clean,那么
pre-clean、clean 都见面受周转。这是Maven很要紧的一个规则,可以大大简化命令行的输入。

 

脚看一下Site生命周期的相继阶段:

  • pre-site  执行有用以生成站点文档之前就的工作。
  • site  生成项目之站点文档。
  • post-site  执行有亟需以生成站点文档之后就的劳作,并且为布局做准备。
  • site-deploy  将转移的站点文档部署至一定的服务器上。

此间经常采取的凡site阶段和site-deploy阶段,用以生成与公布Maven站点,这不过Maven相当强大的效能,Manager比较欣赏,文档及统计数据自动生成,很难堪。

 

说到底,来拘禁一下Maven的极端着重之Default生命周期,绝大部分工作还生在这个生命周期中,这里,我只是讲有较重大和常用的号:

  • validate
  • initialize
  • generate-sources
  • process-sources  
     处理项目主资源文件。一般的话,是针对src/main/resources目录的情进行变量替换等工作晚,复制到项目输出的主classpath目录中。
  • generate-resources
  • process-resources    

  • compile    编译项目的源代码。一般的话,是编译src/main/java目录下之Java文件及路输出的主classpath目录中。

  • process-classes
  • generate-test-sources 
  • process-test-sources  
     处理项目测试资源文件。一般的话,是针对性src/test/resources目录的内容开展变量替换等工作晚,复制到品种输出的测试classpath目录中。
  • generate-test-resources
  • process-test-resources    

  • test-compile    编译项目的测试源代码。一般的话,是编译src/test/java目录下之Java文件及路输出的测试classpath目录中。

  • process-test-classes
  • test    使用相当的单元测试框架运行测试。这些测试代码不会见叫从包要布。
  • prepare-package
  • package    接受编译好之代码,打包改成可揭晓之格式,如 JAR 。
  • pre-integration-test
  • integration-test
  • post-integration-test
  • verify
  • install    将确保安装至地面仓库,以给其它类型依赖。
  • deploy    将最终之包复制到长途的库房,以吃其他开发人员与Maven项目用。

 

大抵,根据名称我们就会猜出每个阶段的用,关于路的事无巨细解释以及那个她等的讲,请参考
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html 。

 

记住,运行任何一个等的早晚,它前面的保有阶段还见面于周转,这吗不怕是怎么我们运行mvn
install
的上,代码会被编译,测试,打包。

除此以外,Maven的插件机制是全依赖Maven的生命周期的,因此了解生命周期至关重要,接下去自己以会见愈来愈分解Maven的插件机制。

 

2.命令行与生命周期

自从命执行执行Maven任务的极关键措施尽管是调用Maven的生命周期阶段。需要注意的凡,各个生命周期是彼此独立的,而一个生命周期的品是发出前后依赖关系之。下面坐部分科普的Maven命令为条例,解释其推行之生命周期阶段:

mvn
clean:
该令调用clean生命周期的clean阶段。实际施行的流也clean生命周期的pre-clean和clean阶段。

mvn
test:
拖欠令调用default生命周期的test阶段。实际履行之级差为default生命周期的validate、initialize等,直到test的具有阶段。这吗解释了为什么在实施测试的时,项目的代码能够自行得以编译。

mvn clean
install:
拖欠令调用clean生命周期的clean阶段同default生命周期的install阶段。实际执行的等也clean生命周期的pre-clean、clean阶段,以及default生命周期的从validate至install的拥有阶段。该令成了个别独生命周期,在履方的类型构建之前清理项目是一个那个好的尽。

mvn clean deploy
site-deploy:
拖欠令调用clean生命周期的clean阶段、default生命周期的deploy阶段,以及site生命周期的site-deploy阶段。实际执行的阶段也clean生命周期的pre-clean、clean阶段,default生命周期的装有阶段,以及site生命周期的兼具阶段。该令成了Maven所有三独生命周期,且deploy为default生命周期的尾声一个号,site-deploy为site生命周期的最后一个流。

出于Maven中一言九鼎的生命周期阶段并无多,而常用之Maven命令实际还是依据这些等级简单构成而改为的,因此如果针对Maven生命周期有一个核心的知情,读者就可是而熟练地运用Maven命令。

 

3.Maven插件机制

 

由此地方的生命周期我们可以了解及,不同的生命周期绑定不同之插件;同时我们解,下载下来的maven核心的东西不了3-4M,它主要就是通过插件来成功这些干活儿之,一旦遇没的插件,它见面跑至对应的地方下载,然后来形成全套过程。那么以咱们的档次遭到争运用插件呢?

 

打开http://maven.apache.org/plugins/index.html网址,我们好看看apache下面的浩大插件,apache下面的插件是较正规的,它其中的音大详尽。下面我们来探望其中有只source的插件的用法。

Source插件是本着源代码进行打包的一个插件,默认情况下,它见面用扭转的源代码放在工程目录的target下面。

Source插件具有五个目标

  • source:aggregate aggregrates
    sources for all modules in an aggregator project.
  • source:jar is
    used to bundle the main sources of the project into a jar archive.
  • source:test-jar on
    the other hand, is used to bundle the test sources of the project
    into a jar archive.
  • source:jar-no-fork is
    similar to jar but does not fork the build lifecycle.
  • source:test-jar-no-fork is
    similar to test-jar but does not fork the build lifecycle.

在我们的工程pom.xml中,在后头引入下面这段配置:

1     <build>    
2         <plugins>
3             <plugin>
4                 <groupId>org.apache.maven.plugins</groupId>
5                 <artifactId>maven-source-plugin</artifactId>
6                 <version>2.1.2</version>
7             </plugin>
8         </plugins>
9     </build>

方这段配置就是针对源码进行包装的插件,我们运行source:jar-no-fork,那么以列之目底下的target会扭转一个类于user-core-0.0.1-SNAPSHOT-sources.jar这样的文书,即项目之源文件。那么哪些拿这个插件与一定的生命周期绑定否?我们来拘禁下就段配置:

 1     <build>    
 2         <plugins>
 3             <plugin>
 4                 <groupId>org.apache.maven.plugins</groupId>
 5                 <artifactId>maven-source-plugin</artifactId>
 6                 <version>2.1.2</version>
 7                 <executions>
 8                     <execution>
 9                         <phase>package</phase>
10                         <goals>
11                             <goal>jar-no-fork</goal>
12                         </goals>
13                     </execution>
14                 </executions>
15             </plugin>
16         </plugins>
17     </build>

通过这段配置,大家可用 mvn package 将项目打包的又会用源代码进行包装。图示说明:

统计 1

 

 

Apache Maven里面还有许多实惠之插件,大家好团结去试试一下,里面说明很详细,大家要照着官方文档进行配备,一般情形下是尚未问题之,如果大家想把插件用的老熟练建议多请教请教大神,或者采购《Maven实战》书籍,书籍被针对插件会介绍的重新详尽,然后再次做大神采用的更,相信大家会娴熟地采用Maven插件机制。

 

结语:今天动之路途,你要是记在胸,无论你及目标之内时有发生差不多远,也要是学会轻松地行动。只有这么,在走向目标的经过遭到,才未见面感到烦闷,才免会见受长期的前途所吓倒。

 

 

而是爱博主:AlanLee

 

博客地址:http://www.cnblogs.com/AlanLee

 

正文自博客园,欢迎大家加入博客园。