发表于: 2017-10-05 19:55:39

1 781


今天完成的事情:

今天一上午都在深入了解了深度思考里的怎么让maven跳过junit

3.怎么样能让Maven跳过JUnit?

为什么?代码发布到线上的时候是不允许带测试类的.不然会造成代码的冗余//代码打包部署到服务器和提交代码有区别

写代码时和提交代码时用的数据库是不一样的,打包提交代码时是用的以后正常使用的数据库假如我不跳过测试类,那么测试类会对我的数据库进行操作污染数据库.这是万万不可以的.

怎么做?mvn的生命周期//每个生命周期是独立运行的,我运行compile它不会去运行clean

maven的生命周期:

clean生命周期:清理项目.

·         pre-clean  执行一些需要在clean之前完成的工作

·         clean  移除所有上一次构建生成的文件

·         post-clean  执行一些需要在clean之后立刻完成的工作

default生命周期:构建项目.complie,package

·         validate

·         generate-sources

·         process-sources

·         generate-resources

·         process-resources     复制并处理资源文件,至目标目录,准备打包。

·         compile     编译项目的源代码。

·         process-classes

·         generate-test-sources 

·         process-test-sources 

·         generate-test-resources

·         process-test-resources     复制并处理资源文件,至目标测试目录。

·         test-compile     编译测试源代码。

·         process-test-classes

·         test     使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

·         prepare-package

·         package     接受编译好的代码,打包成可发布的格式,如 JAR

·         pre-integration-test

·         integration-test

·         post-integration-test

·         verify

·         install     将包安装至本地仓库,以让其它项目依赖。

·         deploy     将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

site生命周期:建立和发布站点.大型项目用.

·         pre-site     执行一些需要在生成站点文档之前完成的工作

·         site    生成项目的站点文档

·         post-site     执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

·         site-deploy     将生成的站点文档部署到特定的服务器上

1.跳过所有的测试

方法一.命令:mvn compile install -DskipTests//编译不运行

方法二.命令:mvn compile -Dmaven.test.skip=true//不编译不运行

方法三.pom配置文件

//不编译

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.1</version>

<configuration>

<skip>true</skip>

</configuration>

</plugin>

//编译不运行

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<version>2.19.1</version>

<configuration>

<skipTests>true</skipTests>

</configuration>

</plugin>"

</plugins>

</build>

2.跳过指定的测试

方法一.通过注解@Ignore

方法二.命令:mvn clean test -Dtest=[ClassName]#[MethodName]//不是指定跳过哪个方法,是指定运行哪个方法

方法三:pom配置文件

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<version>2.19.1</version>

  <configuration>

//运行哪个测试类

<includes>

  <include>**/Test1.java</include>

  <include>**/Test2.java</include>

</includes>

//不运行哪个测试类

<excludes>

<exclude>**/Test3.java</exclude>

<exclude>**/Test4.java</exclude>

</excludes>

</configuration>

</plugin>

</plugins>

</build>

下午开始写springmybatis整合的实例:

jdbc连接池和其他连接池的区别

明天计划完成的事情:

明天把这个项目理解一下,再写一个spring和mybatis结合的例子深入理解一下,再深入理解一下spring的相关知识

遇到的问题:

java.lang.ClassCastException: org.mybatis.spring.mapper.MapperScannerConfigurer cannot be cast to com.mycom.myapp.dao.StudentDAO
翻译:java.lang.ClassCastException:org.mybatis.spring.mapper.MapperScannerConfigurer无法转换为com.mycom.myapp.dao.StudentDAO
原因:    <bean id="studentDAO" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.mycom.myapp.dao"/>
</bean>
MapperScannerConfigurer类会将basePackage下的所有Dao接口全部代理并自动注册为Bean,Bean的ID为Dao接口名称的首字母小写其余不变 如Dao接口为UserDao,那么Bean的ID为userDao
首先basePackage属性是一个路径,表明了需要在哪个路径下搜索Dao接口供MapperScannerConfigurer来使用生成代理类并注册为Bean
解释:就是MapperScannerConfigurer类会将value路径下的接口全部注册成一个一个隐藏的bean,每个bean id为接口类名首字母小写.所以当我写了id为studentDAO就和自动注册的StudentDAO的bean的id重名了,就会报错.
解决办法:这个bean不写id,因为我们根本就不会用到它.



收获:对spring的理解更深了.



返回列表 返回列表
评论

    分享到