欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

打成jar包 如果你使 图纸加密 用的是maven来管理项目

点击: 次  来源:宝鼎软件 时间:2017-07-30

原文出处: 纯洁的微笑

有许多网友会时不时的问我,spring boot项目如何测试,软件开发,如何陈设,在出产中有什么好的陈设方案吗?这篇文章就来先容一下spring boot 如何开拓、调试、打包到最后的投产上线。

开拓阶段

单位测试

在开拓阶段的时候最重要的是单位测试了,springboot对单位测试的支持已经很完善了。

1、在pom包中添加spring-boot-starter-test包引用

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>

2、开拓测试类

以最简朴的helloworld为例,在测试类的类头部需要添加:@RunWith(SpringRunner.class)和@SpringBootTest注解,在测试要领的顶端添加@Test即可,最后在要领上点击右键run就可以运行。

@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {

	@Test
	public void hello() {
		System.out.println("hello world");
	}

}

实际利用中,可以凭据项目标正常利用去注入dao层代码可能是service层代码举办测试验证,spring-boot-starter-test提供许多基本用法,更可贵的是增加了对Controller层测试的支持。

//简朴验证功效集是否正确
Assert.assertEquals(3, userMapper.getAll().size());

//验证功效集,提示
Assert.assertTrue("错误,正确的返回值为200", status == 200); 
Assert.assertFalse("错误,正确的返回值为200", status != 200);

引入了MockMvc支持了对Controller层的测试,简朴示譬喻下:

public class HelloControlerTests {

    private MockMvc mvc;

    //初始化执行
    @Before
    public void setUp() throws Exception {
        mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
    }

    //验证controller是否正常响应并打印返回功效
    @Test
    public void getHello() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
    }
    
    //验证controller是否正常响应并判定返回功效是否正确
    @Test
    public void testHello() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk())
                .andExpect(content().string(equalTo("Hello World")));
    }

}

单位测试是验证你代码第一道屏障,要养成每写一部门代码就举办单位测试的习惯,不要比及全部集成后再举办测试,集成后因为更存眷整体运行结果,很容易遗遗漏代码底层的bug.

集成测试

整体开拓完成之后进入集成测试,spring boot项目标启动进口在 Application类中,直接运行run要领就可以启动项目,可是在调试的进程中我们必定需要不绝的去调试代码,假如每修改一次代码就需要手动重启一次处事就很贫苦,软件开发,spring boot很是贴心的给出了热陈设的支持,很利便在web项目中调试利用。

pom需要添加以下的设置:

 <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>
            </configuration>
        </plugin>
</plugins>
</build>

添加以上设置后,项目就支持了热陈设,很是利便集成测试。

投产上线

其实我以为这个阶段,应该照旧较量简朴一般分为两种;一种是打包成jar包直接执行,另一种是打包成war包放到tomcat处事器下。

打成jar包

假如你利用的是maven来打点项目,执行以下呼吁既可以

cd 项目跟目次(和pom.xml同级)
mvn clean package
## 可能执行下面的呼吁
## 解除测试代码后举办打包
mvn clean package  -Dmaven.test.skip=true

打包完成后jar包会生成到target目次下,定名一般是 项目名+版本号.jar

启动jar包呼吁

java -jar  target/spring-boot-scheduler-1.0.0.jar

这种方法,只要节制台封锁,处事就不能会见了。下面我们利用在靠山运行的方法来启动:

nohup java -jar target/spring-boot-scheduler-1.0.0.jar &

也可以在启动的时候选择读取差异的设置文件

java -jar app.jar --spring.profiles.active=dev

也可以在启动的时候配置jvm参数

java -Xms10m -Xmx80m -jar app.jar &

gradle

假如利用的是gradle,利用下面呼吁打包

gradle build
java -jar build/libs/mymodule-0.0.1-SNAPSHOT.jar

打成war包

打成war包一般可以分两种方法来实现,第一种可以通过eclipse这种开拓东西来导出war包,别的一种是利用呼吁来完成,这里主要先容后一种

1、maven项目,修改pom包

<packaging>jar</packaging>

改为

<packaging>war</packaging>