首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Predictive Cloud Computing 项目 Maven、单元和集成测试,以及静态代码分析-2

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>

返回列表