Predictive Cloud Computing 项目 Maven、单元和集成测试,以及静态代码分析-2
- UID
- 1066743
|
Predictive Cloud Computing 项目 Maven、单元和集成测试,以及静态代码分析-2
本帖最后由 look_w 于 2018-3-31 17:10 编辑
清单 1 包含 BigEngine 项目的 Maven 配置指令。这些指令包含在一个称为项目对象模型 (POM) 文件的文档中。该文件包含在 PCC 中的 BigEngine 项目上编译、测试和执行静态分析的所有必要指令。POM 文件包含独立的代码节,包括 version、model version、packaging、properties 和 build。version 指令定义了 Maven 构建的项目的当前版本。packaging 部分告诉 Maven 在编译和测试后应如何打包得到的工件。modelVersion 告诉 Maven 使用了 Maven 模型的哪个版本。大多数情况下,该版本应为 4.0.0。artifactID 是已打包产品的名称,不含文件扩展名。POM 文件是一个非常大的连续文件;出于演示目的,它被分解为以下的单独代码段。
清单 1.BigEngine Maven 配置1
2
3
4
5
6
| <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 ">
<modelVersion>4.0.0</modelVersion>
<artifactId>BigEngine</artifactId>
<version>2.0.0</version>
<packaging>war</packaging>
|
properties 部分定义了 Maven 在构建过程中要使用的多个属性。对于这个特定项目,我们设置了输出目录和一个构建时间指令,默认情况下会跳过此构建过程的集成测试。Maven 还设置和使用了来源和输出编码。
清单 2.BigEngine Maven 属性配置1
2
3
4
5
6
7
| <properties>
<output.directory>${project.basedir}\WebContent\WEB-INF\classes</output.directory>
<buildtime>${maven.build.timestamp}</buildtime>
<skip.integration.tests>true</skip.integration.tests>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
|
build 部分包含此文档中的大部分指令,并控制了 Maven 应该如何构建此项目。这部分包含多个更小的部分:resources、test-resources、plugins、plugin-management、parent 和 dependencies。除了这些更小的部分之外,build 配置还包含指导构建流程的指令。finalName 指令为 Maven 提供一个用于所获得的构建工件的名称。这个名称通常与更高级的项目配置中的 artifactID 相同。directory 是 Maven 放置构建工件的地方。outputDirectory 是 Maven 将用来放置编译结果的地方。testOutputDirectory 是编译后的测试源文件的目的地。此目录是一个单独的目录,这样测试文件就不会与最终工件打包在一起。
清单 3.BigEngine Maven 构建配置1
2
3
4
5
6
| <build>
<finalName>BigEngine</finalName>
<directory>target</directory>
<outputDirectory>${output.directory}</outputDirectory>
<testOutputDirectory>${output.directory}</testOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
|
resource 部分定义了应包含在结果包中的非代码资源的存放位置。test-resources 部分告诉 Maven 在何处查找可在测试阶段应用但未与构建工件打包在一起的资源。
清单 4.BigEngine Maven 资源和测试资源配置1
2
3
4
5
6
7
8
9
10
| <resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
|
plugins 指令包含在构建流程中使用的一组 Maven 插件。每个插件的配置各不相同。一般而言,必须始终定义插件的版本。每个插件可能都有一些可提供的特定配置指令。有时,我们定义了哪些执行阶段会利用该插件。
清单 5.BigEngine Maven 插件配置1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
| <plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<id>auto-clean</id>
<phase>initialize</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<webXml>${output.directory}\web.xml</webXml>
<warSourceDirectory>WebContent</warSourceDirectory>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>templating-maven-plugin</artifactId>
<version>1.0-alpha-3</version>
<executions>
<execution>
<id>filter-src</id>
<goals>
<goal>filter-sources</goal>
</goals>
<configuration>
<sourceDirectory>${basedir}/src/main/java-templates</sourceDirectory>
<outputDirectory>${project.build.directory}/generated-sources/java-templates</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<!-- States that the plugin's add-test-source goal is executed at generate-test-sources
phase. -->
<execution>
<id>add-integration-test-sources</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<!-- Configures the source directory of integration tests. -->
<sources>
<source>src/integration-test/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<forkCount>4</forkCount>
<reuseForks>true</reuseForks>
<excludes>
<exclude>**/IT*.java</exclude>
</excludes>
</configuration>
</plugin>
<!-- Used for integration tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
</configuration>
<executions>
<!-- States that both integration-test and verify goals of the Failsafe
Maven plugin are executed. -->
<execution>
<id>integration-tests</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<skipTests>${skip.integration.tests}</skipTests>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
|
|
|
|
|
|
|