maven-war-plugin版权声明

原创
小哥 2年前 (2022-12-30) 阅读数 58 #大杂烩

Apache Maven WAR Plugin

The WAR Plugin is responsible for collecting all artifact dependencies, classes and resources of the web application and packaging them into a web application archive.

“包装”这个词听起来很土。更正式的术语应该是“构建项目软件包”。具体来说,项目中的各种文件,例如源代码、编译生成的字节码、配置文件和文档,都是以标准格式生成和归档的。当然,最常见的是JAR包和WAR复杂点的示例是Maven官方下载页面的分发包具有自定义格式,便于用户解压后在命令行使用。作为“包装工具”,Maven帮助用户创建各种软件包的自然义务,规范JAR包和WAR包自然不再是单词,还必须支持稍微复杂的自定义打包格式,本文介绍了一些常用的打包案例和相关实现,除了前面提到的一些包,您还可以看到如何生成源包,Javadoc包,并可直接从命令行运行。CLI包。

任何一个Maven需要定义项目。POM元素packaging(如果未写入,则默认值为jar). 顾名思义,该元素决定了项目的打包方式。在现实世界中,如果不声明元素,Maven将帮助您生成一个JAR包裹如果定义元素的值war然后你会得到一个。WAR包裹如果定义其值POM(例如,它是父模块),则不会生成任何包。除此之外,Maven默认情况下,还支持一些其他流行的打包格式,例如ejb3和ear你不需要知道具体的包装细节,你只需要告诉Maven“我是什么样的项目?”这是协议对配置的影响。

对应于相同package生命周期阶段,Maven为jar已调用项目maven-jar-plugin,为war已调用项目maven-war-plugin换句话说,packaging直接影响Maven构建生命周期。这一点很重要,尤其是当您需要自定义打包行为时,您必须知道要配置哪个插件。

war plugin常用配置参数

archiveClasses配置项

此配置的值为true|false,默认是false。指示是否class把它打包。
正常情况下war工程类型,java编译代码后,将类文件放在WEB-INF/classes目录如下,散装。 配置此参数时true将是一切。class打包为一体jar,jar的名字与war名称一致(后缀除外)。然后把这个jar放到WEB-INF/lib目录,此时WEB-INF/classes目录为空。

attachClasses配置项

此配置的值为true|false,默认是false。表示正在发布war是否同时发布包jar包(只有classes,不包含页面相关文件)。
正常情况下war工程类型,当我们执行install或者deploy的时候build出一个war打包、本地安装或发布到远程。
配置此参数时true时,除了war袋子外面还有一个。jar包装,但jar包的classifier默认为classes。

overlays配置节点

overlays配置将指定war包的内容将与当前项目合并。合并策略:如果存在同名冲突,则使用当前项目中的文件。 overlay具体配置项目(include|exclude)可以指定包含或排除特定模式的文件。

配置示例

多war合并

archiveClasses和attachClasses参数可以同时配置true。此时,包文件包含lib,不含classes。同时发布classifier为classes的jar包。

如果当前项目A需要从B工程的war页面文件被合并到包中,代码也被使用。B类文件。工程B包含的配置如下:

1

2

3

4

5

6

7

8

org.apache.maven.plugins maven-war-plugin 2.6 true

工程A包含的配置如下:

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

groupB B 1.0-SNAPSHOT classes provided groupB B 1.0-SNAPSHOT war org.apache.maven.plugins maven-war-plugin 2.6 groupB B

请注意,如果将合并同名文件夹,则不会合并空文件夹。

把class文件已打包jar如何排除。resources目录?

正常情况下war工程类型,java编译代码后,将类文件放在WEB-INF/classes目录如下,散装。 当archiveClasses参数已配置true将是一切。class打包为一体jar,jar的名字与war名称一致。然后把这个jar放到WEB-INF/lib目录,此时WEB-INF/classes目录为空,但如果需要war包的WEB-INF/classes中保留logback.xml配置文件,我该怎么做?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

maven-war-plugin 3.0.0 true src/main/resources WEB-INF/classes true

项目是动态打包的,不同的环境用不同的配置文件打包。

demo 1

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

project/

`-- src

|-- main

| |-- java

| |-- resources

| | |-- local

| | | |-- logback.xml

| | | |-- spring-dataSource.xml

| | | `-- variable.propertes

| | |-- product

| | | |-- logback.xml

| | | |-- spring-dataSource.xml

| | | `-- variable.propertes

| | `-- qa

| | |-- logback.xml

| | |-- spring-dataSource.xml

| | `-- variable.propertes

| |-- webapp

`-- test

1

2

maven package –P local 开发环境

maven package –P product 生产环境

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

local local true product product src/main/resources local/* product/* rebel.xml true org.apache.maven.plugins maven-war-plugin true false src/main/resources/${package.environment} true WEB-INF/classes org.apache.maven.plugins maven-jar-plugin default-jar package jar

demo 2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

project/

`-- src

|-- main

| |-- java

| |-- env

| | |-- dev

| | | |-- log4j.properties

| | | |-- spring-dataSource.xml

| | | `-- variable.propertes

| | |-- prod

| | | |-- log4j.properties

| | | |-- spring-dataSource.xml

| | | `-- variable.propertes

| | `-- qa

| | |-- log4j.properties

| | |-- spring-dataSource.xml

| | `-- variable.propertes

| |-- resources

| `-- webapp

`-- test

1

2

mvn clean package -P dev

mvn clean package -P qa

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

120

121

122

123

124

125

126

127

128

129

130

131

<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 http://maven.apache.org/maven-v4\_0\_0.xsd">

4.0.0 war 0.0.1-SNAPSHOT demo Maven Webapp webapp webapp scm:svn:http://127.0.0.1/dummy scm:svn:https://127.0.0.1/dummy HEAD http://127.0.0.1/dummy 3.1.0.RELEASE ${final.name} org.apache.maven.plugins maven-war-plugin 2.1.1 TransactionResource TransactionResource WEB-INF/web.xml ${runtime.env} WEB-INF/classes …… dev true src/main/env/dev webapp com.eightqiu CodeCmns 0.0.1-SNAPSHOT qa src/main/env/qa webapp\_${buildNumber} org.codehaus.mojo buildnumber-maven-plugin 1.1 validate create {0,date,yyyyMMdd} timestamp org.apache.maven.plugins maven-javadoc-plugin 2.8.1 com.eightqiu CodeCmns 0.0.1-SNAPSHOT provided prod src/main/env/prod webapp com.eightqiu CodeCmns 0.0.1-SNAPSHOT provided

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门