1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- 3 ~ Copyright 2012 The Netty Project 4 ~ 5 ~ The Netty Project licenses this file to you under the Apache License, 6 ~ version 2.0 (the "License"); you may not use this file except in compliance 7 ~ with the License. You may obtain a copy of the License at: 8 ~ 9 ~ http://www.apache.org/licenses/LICENSE-2.0 10 ~ 11 ~ Unless required by applicable law or agreed to in writing, software 12 ~ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 ~ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 ~ License for the specific language governing permissions and limitations 15 ~ under the License. 16 --> 17 <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"> 18 19 <modelVersion>4.0.0</modelVersion> 20 <parent> 21 <groupId>org.sonatype.oss</groupId> 22 <artifactId>oss-parent</artifactId> 23 <version>9</version> 24 </parent> 25 26 <groupId>io.netty</groupId> 27 <artifactId>netty-parent</artifactId> 28 <packaging>pom</packaging> 29 <version>4.1.6.Final</version> 30 31 <name>Netty</name> 32 <url>http://netty.io/</url> 33 <description> 34 Netty is an asynchronous event-driven network application framework for 35 rapid development of maintainable high performance protocol servers and 36 clients. 37 </description> 38 39 <organization> 40 <name>The Netty Project</name> 41 <url>http://netty.io/</url> 42 </organization> 43 44 <licenses> 45 <license> 46 <name>Apache License, Version 2.0</name> 47 <url>http://www.apache.org/licenses/LICENSE-2.0</url> 48 </license> 49 </licenses> 50 <inceptionYear>2008</inceptionYear> 51 52 <scm> 53 <url>https://github.com/netty/netty</url> 54 <connection>scm:git:git://github.com/netty/netty.git</connection> 55 <developerConnection>scm:git:ssh://git (a] github.com/netty/netty.git</developerConnection> 56 <tag>netty-4.1.6.Final</tag> 57 </scm> 58 59 <developers> 60 <developer> 61 <id>netty.io</id> 62 <name>The Netty Project Contributors</name> 63 <email>netty (a] googlegroups.com</email> 64 <url>http://netty.io/</url> 65 <organization>The Netty Project</organization> 66 <organizationUrl>http://netty.io/</organizationUrl> 67 </developer> 68 </developers> 69 70 <profiles> 71 <profile> 72 <id>leak</id> 73 <properties> 74 <argLine.leak>-Dio.netty.leakDetectionLevel=paranoid -Dio.netty.leakDetection.maxRecords=32</argLine.leak> 75 </properties> 76 </profile> 77 <profile> 78 <id>noUnsafe</id> 79 <properties> 80 <argLine.noUnsafe>-Dio.netty.noUnsafe</argLine.noUnsafe> 81 </properties> 82 </profile> 83 <profile> 84 <id>coverage</id> 85 <properties> 86 <argLine.coverage>${jacoco.argLine}</argLine.coverage> 87 </properties> 88 <build> 89 <plugins> 90 <plugin> 91 <groupId>org.jacoco</groupId> 92 <artifactId>jacoco-maven-plugin</artifactId> 93 <version>0.7.7.201606060606</version> 94 <executions> 95 <execution> 96 <id>jacoco-prepare-agent</id> 97 <goals> 98 <goal>prepare-agent</goal> 99 </goals> 100 <configuration> 101 <propertyName>jacoco.argLine</propertyName> 102 </configuration> 103 </execution> 104 </executions> 105 </plugin> 106 </plugins> 107 </build> 108 </profile> 109 <profile> 110 <id>jdk8</id> 111 <activation> 112 <jdk>[1.8,)</jdk> 113 </activation> 114 <properties> 115 <!-- Our Javadoc has poor enough quality to fail the build thanks to JDK8 javadoc which got more strict. --> 116 <maven.javadoc.failOnError>false</maven.javadoc.failOnError> 117 </properties> 118 </profile> 119 <profile> 120 <id>linux</id> 121 <activation> 122 <os> 123 <family>linux</family> 124 </os> 125 </activation> 126 <modules> 127 <module>transport-native-epoll</module> 128 </modules> 129 </profile> 130 <!-- 131 Netty must be released from RHEL 6.7 x86_64 or compatible so that: 132 133 1) we ship x86_64 version of epoll transport officially, and 134 2) we ensure the ABI compatibility with older GLIBC versions. 135 136 The shared library built on a distribution with newer GLIBC 137 will not run on older distributions. 138 --> 139 <profile> 140 <id>restricted-release</id> 141 <build> 142 <plugins> 143 <plugin> 144 <artifactId>maven-enforcer-plugin</artifactId> 145 <executions> 146 <execution> 147 <id>enforce-release-environment</id> 148 <goals> 149 <goal>enforce</goal> 150 </goals> 151 <configuration> 152 <rules> 153 <requireJavaVersion> 154 <!-- Enforce JDK 1.7 (and not 1.8+) for compilation. --> 155 <!-- See: https://github.com/netty/netty/issues/3548 --> 156 <version>[1.7.0, 1.8.0)</version> 157 </requireJavaVersion> 158 <requireProperty> 159 <regexMessage> 160 Release process must be performed on linux-x86_64. 161 </regexMessage> 162 <property>os.detected.classifier</property> 163 <regex>^linux-x86_64-fedora$</regex> 164 </requireProperty> 165 <requireFilesContent> 166 <message> 167 Release process must be performed on RHEL 6.7 or its derivatives. 168 </message> 169 <files> 170 <file>/etc/redhat-release</file> 171 </files> 172 <content>release 6.7</content> 173 </requireFilesContent> 174 </rules> 175 </configuration> 176 </execution> 177 </executions> 178 </plugin> 179 </plugins> 180 </build> 181 </profile> 182 <profile> 183 <!-- 184 This profile exists because either ALPN or NPN can exits on the class path at once, but not both. 185 The JDK version is typically used to distinguish which should be used but there is some overlap 186 where both could be used. ALPN is the default and this profile is enabled with a -Dforcenpn=true arugument 187 --> 188 <id>forcenpn</id> 189 <activation> 190 <property> 191 <name>forcenpn</name> 192 <value>true</value> 193 </property> 194 </activation> 195 <properties> 196 <jetty.alpnAgent.option>forceNpn=true</jetty.alpnAgent.option> 197 </properties> 198 </profile> 199 </profiles> 200 201 <properties> 202 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 203 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 204 <netty.build.version>22</netty.build.version> 205 <jboss.marshalling.version>1.4.11.Final</jboss.marshalling.version> 206 <jetty.alpnAgent.version>2.0.4</jetty.alpnAgent.version> 207 <jetty.alpnAgent.path>"${settings.localRepository}"/org/mortbay/jetty/alpn/jetty-alpn-agent/${jetty.alpnAgent.version}/jetty-alpn-agent-${jetty.alpnAgent.version}.jar</jetty.alpnAgent.path> 208 <argLine.common> 209 -server 210 -dsa -da -ea:io.netty... 211 -XX:+AggressiveOpts 212 -XX:+TieredCompilation 213 -XX:+UseBiasedLocking 214 -XX:+UseFastAccessorMethods 215 -XX:+OptimizeStringConcat 216 -XX:+HeapDumpOnOutOfMemoryError 217 </argLine.common> 218 <!-- Default to ALPN. See forcenpn profile to force NPN --> 219 <argLine.alpnAgent>-javaagent:${jetty.alpnAgent.path}=${jetty.alpnAgent.option}</argLine.alpnAgent> 220 <argLine.leak>-D_</argLine.leak> <!-- Overridden when 'leak' profile is active --> 221 <argLine.noUnsafe>-D_</argLine.noUnsafe> <!-- Overridden when 'noUnsafe' profile is active --> 222 <argLine.coverage>-D_</argLine.coverage> <!-- Overridden when 'coverage' profile is active --> 223 <!-- Configure the os-maven-plugin extension to expand the classifier on --> 224 <!-- Fedora-"like" systems. This is currently only used for the netty-tcnative dependency --> 225 <os.detection.classifierWithLikes>fedora</os.detection.classifierWithLikes> 226 <tcnative.artifactId>netty-tcnative</tcnative.artifactId> 227 <tcnative.version>1.1.33.Fork23</tcnative.version> 228 <tcnative.classifier>${os.detected.classifier}</tcnative.classifier> 229 <epoll.classifier>${os.detected.name}-${os.detected.arch}</epoll.classifier> 230 <logging.config>${project.basedir}/../common/src/test/resources/logback-test.xml</logging.config> 231 <logging.logLevel>debug</logging.logLevel> 232 <log4j2.version>2.6.2</log4j2.version> 233 </properties> 234 235 <modules> 236 <module>common</module> 237 <module>buffer</module> 238 <module>codec</module> 239 <module>codec-dns</module> 240 <module>codec-haproxy</module> 241 <module>codec-http</module> 242 <module>codec-http2</module> 243 <module>codec-memcache</module> 244 <module>codec-mqtt</module> 245 <module>codec-redis</module> 246 <module>codec-smtp</module> 247 <module>codec-socks</module> 248 <module>codec-stomp</module> 249 <module>codec-xml</module> 250 <module>resolver</module> 251 <module>resolver-dns</module> 252 <module>transport</module> 253 <module>transport-rxtx</module> 254 <module>transport-sctp</module> 255 <module>transport-udt</module> 256 <module>handler</module> 257 <module>handler-proxy</module> 258 <module>example</module> 259 <module>testsuite</module> 260 <module>testsuite-osgi</module> 261 <module>microbench</module> 262 <module>all</module> 263 <module>tarball</module> 264 </modules> 265 266 <dependencyManagement> 267 <dependencies> 268 <!-- Byte code generator - completely optional --> 269 <dependency> 270 <groupId>org.javassist</groupId> 271 <artifactId>javassist</artifactId> 272 <version>3.20.0-GA</version> 273 <scope>compile</scope> 274 <optional>true</optional> 275 </dependency> 276 277 <!-- JBoss Marshalling - completely optional --> 278 <dependency> 279 <groupId>org.jboss.marshalling</groupId> 280 <artifactId>jboss-marshalling</artifactId> 281 <version>${jboss.marshalling.version}</version> 282 <scope>compile</scope> 283 <optional>true</optional> 284 </dependency> 285 286 <!-- SPDY and HTTP/2 - completely optional --> 287 <dependency> 288 <groupId>org.eclipse.jetty.npn</groupId> 289 <artifactId>npn-api</artifactId> 290 <version>1.1.1.v20141010</version> 291 <scope>provided</scope> <!-- Provided by npn-boot --> 292 </dependency> 293 <dependency> 294 <groupId>org.eclipse.jetty.alpn</groupId> 295 <artifactId>alpn-api</artifactId> 296 <version>1.1.2.v20150522</version> 297 <scope>provided</scope> <!-- Provided by alpn-boot --> 298 </dependency> 299 300 <!-- Google Protocol Buffers - completely optional --> 301 <dependency> 302 <groupId>com.google.protobuf</groupId> 303 <artifactId>protobuf-java</artifactId> 304 <version>2.6.1</version> 305 </dependency> 306 <dependency> 307 <groupId>com.google.protobuf.nano</groupId> 308 <artifactId>protobuf-javanano</artifactId> 309 <version>3.0.0-alpha-5</version> 310 </dependency> 311 312 <!-- Our own Tomcat Native fork - completely optional, used for acclerating SSL with OpenSSL. --> 313 <dependency> 314 <groupId>${project.groupId}</groupId> 315 <artifactId>${tcnative.artifactId}</artifactId> 316 <version>${tcnative.version}</version> 317 <classifier>${tcnative.classifier}</classifier> 318 <scope>compile</scope> 319 <optional>true</optional> 320 </dependency> 321 322 <!-- 323 Bouncy Castle - completely optional, only needed when: 324 - you generate a temporary self-signed certificate using SelfSignedCertificate, and 325 - you don't use the JDK which doesn't provide sun.security.x509 package. 326 --> 327 <dependency> 328 <groupId>org.bouncycastle</groupId> 329 <artifactId>bcpkix-jdk15on</artifactId> 330 <version>1.54</version> 331 <scope>compile</scope> 332 <optional>true</optional> 333 </dependency> 334 335 <dependency> 336 <groupId>com.fasterxml</groupId> 337 <artifactId>aalto-xml</artifactId> 338 <version>1.0.0</version> 339 </dependency> 340 341 <dependency> 342 <groupId>com.jcraft</groupId> 343 <artifactId>jzlib</artifactId> 344 <version>1.1.3</version> 345 </dependency> 346 <dependency> 347 <groupId>com.ning</groupId> 348 <artifactId>compress-lzf</artifactId> 349 <version>1.0.3</version> 350 </dependency> 351 <dependency> 352 <groupId>net.jpountz.lz4</groupId> 353 <artifactId>lz4</artifactId> 354 <version>1.3.0</version> 355 </dependency> 356 <dependency> 357 <groupId>com.github.jponge</groupId> 358 <artifactId>lzma-java</artifactId> 359 <version>1.3</version> 360 </dependency> 361 362 <!-- Java concurrency tools for the JVM --> 363 <dependency> 364 <groupId>org.jctools</groupId> 365 <artifactId>jctools-core</artifactId> 366 <version>1.2.1</version> 367 </dependency> 368 369 <dependency> 370 <groupId>org.rxtx</groupId> 371 <artifactId>rxtx</artifactId> 372 <version>2.1.7</version> 373 </dependency> 374 375 <dependency> 376 <groupId>com.barchart.udt</groupId> 377 <artifactId>barchart-udt-bundle</artifactId> 378 <version>2.3.0</version> 379 </dependency> 380 381 <dependency> 382 <groupId>javax.servlet</groupId> 383 <artifactId>servlet-api</artifactId> 384 <version>2.5</version> 385 </dependency> 386 387 <dependency> 388 <groupId>org.slf4j</groupId> 389 <artifactId>slf4j-api</artifactId> 390 <version>1.7.21</version> 391 </dependency> 392 <dependency> 393 <groupId>commons-logging</groupId> 394 <artifactId>commons-logging</artifactId> 395 <version>1.2</version> 396 </dependency> 397 <dependency> 398 <groupId>org.apache.logging.log4j</groupId> 399 <artifactId>log4j-api</artifactId> 400 <version>${log4j2.version}</version> 401 </dependency> 402 <dependency> 403 <groupId>log4j</groupId> 404 <artifactId>log4j</artifactId> 405 <version>1.2.17</version> 406 <exclusions> 407 <exclusion> 408 <artifactId>mail</artifactId> 409 <groupId>javax.mail</groupId> 410 </exclusion> 411 <exclusion> 412 <artifactId>jms</artifactId> 413 <groupId>javax.jms</groupId> 414 </exclusion> 415 <exclusion> 416 <artifactId>jmxtools</artifactId> 417 <groupId>com.sun.jdmk</groupId> 418 </exclusion> 419 <exclusion> 420 <artifactId>jmxri</artifactId> 421 <groupId>com.sun.jmx</groupId> 422 </exclusion> 423 </exclusions> 424 <optional>true</optional> 425 </dependency> 426 427 <!-- Metrics providers --> 428 <dependency> 429 <groupId>com.yammer.metrics</groupId> 430 <artifactId>metrics-core</artifactId> 431 <version>2.2.0</version> 432 </dependency> 433 434 <!-- Common test dependencies --> 435 <dependency> 436 <groupId>junit</groupId> 437 <artifactId>junit</artifactId> 438 <version>4.12</version> 439 <scope>test</scope> 440 </dependency> 441 <dependency> 442 <groupId>${project.groupId}</groupId> 443 <artifactId>netty-build</artifactId> 444 <version>${netty.build.version}</version> 445 <scope>test</scope> 446 </dependency> 447 <dependency> 448 <groupId>org.hamcrest</groupId> 449 <artifactId>hamcrest-library</artifactId> 450 <version>1.3</version> 451 <scope>test</scope> 452 </dependency> 453 <dependency> 454 <groupId>org.easymock</groupId> 455 <artifactId>easymock</artifactId> 456 <version>3.4</version> 457 <scope>test</scope> 458 </dependency> 459 <dependency> 460 <groupId>org.easymock</groupId> 461 <artifactId>easymockclassextension</artifactId> 462 <version>3.2</version> 463 <scope>test</scope> 464 </dependency> 465 <dependency> 466 <groupId>org.jmock</groupId> 467 <artifactId>jmock-junit4</artifactId> 468 <version>2.8.2</version> 469 <scope>test</scope> 470 <exclusions> 471 <exclusion> 472 <groupId>junit</groupId> 473 <artifactId>junit-dep</artifactId> 474 </exclusion> 475 </exclusions> 476 </dependency> 477 <dependency> 478 <groupId>org.mockito</groupId> 479 <artifactId>mockito-core</artifactId> 480 <version>1.10.19</version> 481 <scope>test</scope> 482 </dependency> 483 <dependency> 484 <groupId>ch.qos.logback</groupId> 485 <artifactId>logback-classic</artifactId> 486 <version>1.1.7</version> 487 <scope>test</scope> 488 </dependency> 489 490 <!-- Test dependencies for jboss marshalling encoder/decoder --> 491 <dependency> 492 <groupId>org.jboss.marshalling</groupId> 493 <artifactId>jboss-marshalling-serial</artifactId> 494 <version>${jboss.marshalling.version}</version> 495 <scope>test</scope> 496 </dependency> 497 <dependency> 498 <groupId>org.jboss.marshalling</groupId> 499 <artifactId>jboss-marshalling-river</artifactId> 500 <version>${jboss.marshalling.version}</version> 501 <scope>test</scope> 502 </dependency> 503 504 <!-- Test dependencies for microbench --> 505 <dependency> 506 <groupId>com.google.caliper</groupId> 507 <artifactId>caliper</artifactId> 508 <version>0.5-rc1</version> 509 <scope>test</scope> 510 </dependency> 511 512 <!-- Test dependency for Bzip2 compression codec --> 513 <dependency> 514 <groupId>org.apache.commons</groupId> 515 <artifactId>commons-compress</artifactId> 516 <version>1.12</version> 517 <scope>test</scope> 518 </dependency> 519 520 <!-- Test dependency used by http/2 hpack --> 521 <dependency> 522 <groupId>com.google.code.gson</groupId> 523 <artifactId>gson</artifactId> 524 <version>2.7</version> 525 <scope>test</scope> 526 </dependency> 527 528 <!-- Test suite dependency for generating a compressed heap dump file --> 529 <dependency> 530 <groupId>org.tukaani</groupId> 531 <artifactId>xz</artifactId> 532 <version>1.5</version> 533 </dependency> 534 535 <!-- Test dependency for resolver-dns --> 536 <dependency> 537 <groupId>org.apache.directory.server</groupId> 538 <artifactId>apacheds-protocol-dns</artifactId> 539 <version>1.5.7</version> 540 <scope>test</scope> 541 </dependency> 542 543 <!-- Test dependency for log4j2 tests --> 544 <dependency> 545 <groupId>org.apache.logging.log4j</groupId> 546 <artifactId>log4j-core</artifactId> 547 <version>${log4j2.version}</version> 548 <scope>test</scope> 549 </dependency> 550 </dependencies> 551 </dependencyManagement> 552 553 <dependencies> 554 <!-- Enable Javassist support for all test runs --> 555 <dependency> 556 <groupId>org.javassist</groupId> 557 <artifactId>javassist</artifactId> 558 <scope>test</scope> 559 </dependency> 560 561 <!-- Testing frameworks and related dependencies --> 562 <dependency> 563 <groupId>junit</groupId> 564 <artifactId>junit</artifactId> 565 <scope>test</scope> 566 </dependency> 567 <dependency> 568 <groupId>${project.groupId}</groupId> 569 <artifactId>netty-build</artifactId> 570 <scope>test</scope> 571 </dependency> 572 <dependency> 573 <groupId>org.hamcrest</groupId> 574 <artifactId>hamcrest-library</artifactId> 575 <scope>test</scope> 576 </dependency> 577 <dependency> 578 <groupId>org.easymock</groupId> 579 <artifactId>easymock</artifactId> 580 <scope>test</scope> 581 </dependency> 582 <dependency> 583 <groupId>org.easymock</groupId> 584 <artifactId>easymockclassextension</artifactId> 585 <scope>test</scope> 586 </dependency> 587 <dependency> 588 <groupId>org.jmock</groupId> 589 <artifactId>jmock-junit4</artifactId> 590 <scope>test</scope> 591 </dependency> 592 <dependency> 593 <groupId>org.mockito</groupId> 594 <artifactId>mockito-core</artifactId> 595 <scope>test</scope> 596 </dependency> 597 <dependency> 598 <groupId>ch.qos.logback</groupId> 599 <artifactId>logback-classic</artifactId> 600 <scope>test</scope> 601 </dependency> 602 </dependencies> 603 604 <build> 605 <extensions> 606 <extension> 607 <groupId>kr.motd.maven</groupId> 608 <artifactId>os-maven-plugin</artifactId> 609 <version>1.5.0.Final</version> 610 </extension> 611 </extensions> 612 613 <plugins> 614 <plugin> 615 <artifactId>maven-enforcer-plugin</artifactId> 616 <executions> 617 <execution> 618 <id>enforce-tools</id> 619 <goals> 620 <goal>enforce</goal> 621 </goals> 622 <configuration> 623 <rules> 624 <requireJavaVersion> 625 <!-- Enforce JDK 1.7+ for compilation. --> 626 <!-- This is needed because of java.util.zip.Deflater and NIO UDP multicast. --> 627 <version>[1.7.0,)</version> 628 </requireJavaVersion> 629 <requireMavenVersion> 630 <version>[3.1.1,)</version> 631 </requireMavenVersion> 632 <requireProperty> 633 <regexMessage> 634 x86_64 JDK must be used. 635 </regexMessage> 636 <property>os.detected.arch</property> 637 <regex>^x86_64$</regex> 638 </requireProperty> 639 </rules> 640 </configuration> 641 </execution> 642 </executions> 643 </plugin> 644 <plugin> 645 <artifactId>maven-compiler-plugin</artifactId> 646 <version>3.5.1</version> 647 <configuration> 648 <compilerVersion>1.7</compilerVersion> 649 <fork>true</fork> 650 <source>1.6</source> 651 <target>1.6</target> 652 <debug>true</debug> 653 <optimize>true</optimize> 654 <showDeprecation>true</showDeprecation> 655 <showWarnings>true</showWarnings> 656 <compilerArgument>-Xlint:-options</compilerArgument> 657 <!-- XXX: maven-release-plugin complains - MRELEASE-715 --> 658 <!-- 659 <compilerArguments> 660 <Xlint:-options /> 661 <Xlint:unchecked /> 662 <Xlint:deprecation /> 663 </compilerArguments> 664 --> 665 <meminitial>256m</meminitial> 666 <maxmem>1024m</maxmem> 667 <excludes> 668 <exclude>**/package-info.java</exclude> 669 </excludes> 670 </configuration> 671 </plugin> 672 <plugin> 673 <!-- ensure that only methods available in java 1.6 can 674 be used even when compiling with java 1.7+ --> 675 <groupId>org.codehaus.mojo</groupId> 676 <artifactId>animal-sniffer-maven-plugin</artifactId> 677 <version>1.11</version> 678 <dependencies> 679 <!-- Upgrade ASM and support Java 8 bytecode --> 680 <dependency> 681 <groupId>org.ow2.asm</groupId> 682 <artifactId>asm-all</artifactId> 683 <version>5.1</version> 684 </dependency> 685 </dependencies> 686 <configuration> 687 <signature> 688 <groupId>org.codehaus.mojo.signature</groupId> 689 <artifactId>java16</artifactId> 690 <version>1.1</version> 691 </signature> 692 <ignores> 693 <ignore>sun.misc.Unsafe</ignore> 694 <ignore>sun.misc.Cleaner</ignore> 695 <ignore>sun.nio.ch.DirectBuffer</ignore> 696 697 <ignore>java.util.zip.Deflater</ignore> 698 699 <!-- Used for NIO --> 700 <ignore>java.nio.channels.DatagramChannel</ignore> 701 <ignore>java.nio.channels.MembershipKey</ignore> 702 <ignore>java.nio.channels.ServerSocketChannel</ignore> 703 <ignore>java.nio.channels.SocketChannel</ignore> 704 <ignore>java.net.StandardProtocolFamily</ignore> 705 <ignore>java.nio.channels.spi.SelectorProvider</ignore> 706 707 <!-- Self-signed certificate generation --> 708 <ignore>sun.security.x509.AlgorithmId</ignore> 709 <ignore>sun.security.x509.CertificateAlgorithmId</ignore> 710 <ignore>sun.security.x509.CertificateIssuerName</ignore> 711 <ignore>sun.security.x509.CertificateSerialNumber</ignore> 712 <ignore>sun.security.x509.CertificateSubjectName</ignore> 713 <ignore>sun.security.x509.CertificateValidity</ignore> 714 <ignore>sun.security.x509.CertificateVersion</ignore> 715 <ignore>sun.security.x509.CertificateX509Key</ignore> 716 <ignore>sun.security.x509.X500Name</ignore> 717 <ignore>sun.security.x509.X509CertInfo</ignore> 718 <ignore>sun.security.x509.X509CertImpl</ignore> 719 720 <!-- SSLSession implementation --> 721 <ignore>javax.net.ssl.SSLEngine</ignore> 722 <ignore>javax.net.ssl.X509ExtendedTrustManager</ignore> 723 <ignore>javax.net.ssl.SSLParameters</ignore> 724 <ignore>java.security.AlgorithmConstraints</ignore> 725 <ignore>java.security.cert.CertificateRevokedException</ignore> 726 727 <ignore>java.util.concurrent.ConcurrentLinkedDeque</ignore> 728 729 <!-- Compression --> 730 <ignore>java.util.zip.CRC32</ignore> 731 <ignore>java.util.zip.Adler32</ignore> 732 </ignores> 733 </configuration> 734 <executions> 735 <execution> 736 <phase>process-classes</phase> 737 <goals> 738 <goal>check</goal> 739 </goals> 740 </execution> 741 </executions> 742 </plugin> 743 <plugin> 744 <artifactId>maven-checkstyle-plugin</artifactId> 745 <version>2.12.1</version> 746 <executions> 747 <execution> 748 <id>check-style</id> 749 <goals> 750 <goal>check</goal> 751 </goals> 752 <phase>validate</phase> 753 <configuration> 754 <consoleOutput>true</consoleOutput> 755 <logViolationsToConsole>true</logViolationsToConsole> 756 <failsOnError>true</failsOnError> 757 <failOnViolation>true</failOnViolation> 758 <configLocation>io/netty/checkstyle.xml</configLocation> 759 <includeTestSourceDirectory>true</includeTestSourceDirectory> 760 </configuration> 761 </execution> 762 </executions> 763 <dependencies> 764 <dependency> 765 <groupId>${project.groupId}</groupId> 766 <artifactId>netty-build</artifactId> 767 <version>${netty.build.version}</version> 768 </dependency> 769 </dependencies> 770 </plugin> 771 <plugin> 772 <groupId>org.codehaus.mojo</groupId> 773 <artifactId>xml-maven-plugin</artifactId> 774 <version>1.0.1</version> 775 <executions> 776 <execution> 777 <id>check-style</id> 778 <goals> 779 <goal>check-format</goal> 780 </goals> 781 <phase>validate</phase> 782 </execution> 783 </executions> 784 <configuration> 785 <formatFileSets> 786 <formatFileSet> 787 <directory>${project.basedir}</directory> 788 <includes> 789 <include>**/pom.xml</include> 790 </includes> 791 </formatFileSet> 792 </formatFileSets> 793 <useDefaultFormatFileSet>false</useDefaultFormatFileSet> 794 </configuration> 795 </plugin> 796 <!-- Download the npn-boot.jar in advance to add it to the boot classpath. --> 797 <plugin> 798 <artifactId>maven-dependency-plugin</artifactId> 799 <executions> 800 <execution> 801 <id>get-jetty-alpn-agent</id> 802 <phase>validate</phase> 803 <goals> 804 <goal>get</goal> 805 </goals> 806 <configuration> 807 <groupId>org.mortbay.jetty.alpn</groupId> 808 <artifactId>jetty-alpn-agent</artifactId> 809 <version>${jetty.alpnAgent.version}</version> 810 </configuration> 811 </execution> 812 </executions> 813 </plugin> 814 <plugin> 815 <artifactId>maven-surefire-plugin</artifactId> 816 <configuration> 817 <includes> 818 <include>**/*Test*.java</include> 819 <include>**/*Benchmark*.java</include> 820 </includes> 821 <excludes> 822 <exclude>**/Abstract*</exclude> 823 <exclude>**/TestUtil*</exclude> 824 </excludes> 825 <runOrder>random</runOrder> 826 <systemPropertyVariables> 827 <logback.configurationFile>${logging.config}</logback.configurationFile> 828 <logLevel>${logging.logLevel}</logLevel> 829 </systemPropertyVariables> 830 <argLine>${argLine.common} ${argLine.alpnAgent} ${argLine.leak} ${argLine.coverage} ${argLine.noUnsafe}</argLine> 831 <properties> 832 <property> 833 <name>listener</name> 834 <value>io.netty.build.junit.TimedOutTestsListener</value> 835 </property> 836 </properties> 837 </configuration> 838 </plugin> 839 <!-- always produce osgi bundles --> 840 <plugin> 841 <groupId>org.apache.felix</groupId> 842 <artifactId>maven-bundle-plugin</artifactId> 843 <version>2.5.4</version> 844 <executions> 845 <execution> 846 <id>generate-manifest</id> 847 <phase>process-classes</phase> 848 <goals> 849 <goal>manifest</goal> 850 </goals> 851 <configuration> 852 <supportedProjectTypes> 853 <supportedProjectType>jar</supportedProjectType> 854 <supportedProjectType>bundle</supportedProjectType> 855 </supportedProjectTypes> 856 <instructions> 857 <Export-Package>${project.groupId}.*</Export-Package> 858 <!-- enforce JVM vendor package as optional --> 859 <Import-Package>sun.misc.*;resolution:=optional,sun.nio.ch;resolution:=optional,sun.security.*;resolution:=optional,org.eclipse.jetty.npn;version="[1,2)";resolution:=optional,org.eclipse.jetty.alpn;version="[1,2)";resolution:=optional,*</Import-Package> 860 <!-- override "internal" private package convention --> 861 <Private-Package>!*</Private-Package> 862 </instructions> 863 </configuration> 864 </execution> 865 </executions> 866 </plugin> 867 868 <plugin> 869 <groupId>org.codehaus.mojo</groupId> 870 <artifactId>build-helper-maven-plugin</artifactId> 871 <version>1.10</version> 872 <executions> 873 <execution> 874 <id>parse-version</id> 875 <goals> 876 <goal>parse-version</goal> 877 </goals> 878 </execution> 879 </executions> 880 </plugin> 881 882 <plugin> 883 <artifactId>maven-source-plugin</artifactId> 884 <version>3.0.1</version> 885 <!-- Eclipse-related OSGi manifests 886 See https://github.com/netty/netty/issues/3886 887 More information: http://rajakannappan.blogspot.ie/2010/03/automating-eclipse-source-bundle.html --> 888 <configuration> 889 <archive> 890 <manifestEntries> 891 <Bundle-ManifestVersion>2</Bundle-ManifestVersion> 892 <Bundle-Name>${project.name}</Bundle-Name> 893 <Bundle-SymbolicName>${project.groupId}.${project.artifactId}.source</Bundle-SymbolicName> 894 <Bundle-Vendor>${project.organization.name}</Bundle-Vendor> 895 <Bundle-Version>${parsedVersion.osgiVersion}</Bundle-Version> 896 <Eclipse-SourceBundle>${project.groupId}.${project.artifactId};version="${parsedVersion.osgiVersion}";roots:="."</Eclipse-SourceBundle> 897 </manifestEntries> 898 </archive> 899 </configuration> 900 901 <executions> 902 <!-- 903 ~ This workaround prevents Maven from executing the 'generate-sources' phase twice. 904 ~ See http://jira.codehaus.org/browse/MSOURCES-13 905 ~ and http://blog.peterlynch.ca/2010/05/maven-how-to-prevent-generate-sources.html 906 --> 907 <execution> 908 <id>attach-sources</id> 909 <phase>invalid</phase> 910 <goals> 911 <goal>jar</goal> 912 </goals> 913 </execution> 914 <execution> 915 <id>attach-sources-no-fork</id> 916 <phase>package</phase> 917 <goals> 918 <goal>jar-no-fork</goal> 919 </goals> 920 </execution> 921 </executions> 922 </plugin> 923 <plugin> 924 <artifactId>maven-javadoc-plugin</artifactId> 925 <version>2.10.4</version> 926 <configuration> 927 <detectOfflineLinks>false</detectOfflineLinks> 928 <breakiterator>true</breakiterator> 929 <version>false</version> 930 <author>false</author> 931 <keywords>true</keywords> 932 </configuration> 933 </plugin> 934 <plugin> 935 <artifactId>maven-deploy-plugin</artifactId> 936 <version>2.8.2</version> 937 <configuration> 938 <retryFailedDeploymentCount>10</retryFailedDeploymentCount> 939 </configuration> 940 </plugin> 941 <plugin> 942 <artifactId>maven-release-plugin</artifactId> 943 <!-- Downgrade to 2.4.1 if release fails --> 944 <version>2.5.3</version> 945 <configuration> 946 <useReleaseProfile>false</useReleaseProfile> 947 <arguments>-P restricted-release,sonatype-oss-release,full</arguments> 948 <autoVersionSubmodules>true</autoVersionSubmodules> 949 <allowTimestampedSnapshots>false</allowTimestampedSnapshots> 950 <tagNameFormat>netty-@{project.version}</tagNameFormat> 951 </configuration> 952 <dependencies> 953 <dependency> 954 <groupId>org.apache.maven.scm</groupId> 955 <artifactId>maven-scm-api</artifactId> 956 <version>1.9.4</version> 957 </dependency> 958 <dependency> 959 <groupId>org.apache.maven.scm</groupId> 960 <artifactId>maven-scm-provider-gitexe</artifactId> 961 <version>1.9.4</version> 962 </dependency> 963 </dependencies> 964 </plugin> 965 966 <!-- Ensure to put maven-antrun-plugin at the end of the plugin list 967 so that they are run lastly in the same phase. --> 968 <plugin> 969 <artifactId>maven-antrun-plugin</artifactId> 970 <executions> 971 <!-- Generate the version properties for all artifacts. --> 972 <execution> 973 <id>write-version-properties</id> 974 <phase>initialize</phase> 975 <goals> 976 <goal>run</goal> 977 </goals> 978 <configuration> 979 <target> 980 <taskdef resource="net/sf/antcontrib/antlib.xml" /> 981 982 <!-- Get the information about the latest commit --> 983 <exec executable="git" outputproperty="gitOutput.lastCommit" resultproperty="gitExitCode.lastCommit" failonerror="false" failifexecutionfails="false"> 984 <arg value="log" /> 985 <arg value="-1" /> 986 <arg value="--format=format:%h %H %cd" /> 987 <arg value="--date=iso" /> 988 </exec> 989 <propertyregex property="shortCommitHash" input="${gitOutput.lastCommit}" regexp="^([0-9a-f]+) .*$" select="\1" casesensitive="true" defaultValue="0" /> 990 <propertyregex property="longCommitHash" input="${gitOutput.lastCommit}" regexp="^[0-9a-f]+ ([0-9a-f]{40}) .*$" select="\1" casesensitive="true" defaultValue="0000000000000000000000000000000000000000" /> 991 <propertyregex property="commitDate" input="${gitOutput.lastCommit}" regexp="^[0-9a-f]+ [0-9a-f]{40} (.*)$" select="\1" casesensitive="true" defaultValue="1970-01-01 00:00:00 +0000" /> 992 993 <!-- Get the information abount whether the repository is clean or dirty --> 994 <exec executable="git" outputproperty="gitOutput.repoStatus" resultproperty="gitExitCode.repoStatus" failonerror="false" failifexecutionfails="false"> 995 <arg value="status" /> 996 <arg value="--porcelain" /> 997 </exec> 998 <if> 999 <equals arg2="0" arg1="${gitExitCode.repoStatus}" /> 1000 <then> 1001 <if> 1002 <equals arg2="" arg1="${gitOutput.repoStatus}" /> 1003 <then> 1004 <property name="repoStatus" value="clean" /> 1005 </then> 1006 <else> 1007 <property name="repoStatus" value="dirty" /> 1008 </else> 1009 </if> 1010 </then> 1011 <else> 1012 <property name="repoStatus" value="unknown" /> 1013 </else> 1014 </if> 1015 1016 <!-- Print the obtained commit information. --> 1017 <echo>Current commit: ${shortCommitHash} on ${commitDate}</echo> 1018 1019 <!-- Generate the .properties file. --> 1020 <!-- 1021 <property name="metaInfDir" value="${project.basedir}/src/main/resources/META-INF" /> 1022 --> 1023 <property name="metaInfDir" value="${project.build.outputDirectory}/META-INF" /> 1024 <property name="versionPropFile" value="${metaInfDir}/${project.groupId}.versions.properties" /> 1025 <mkdir dir="${metaInfDir}" /> 1026 <delete file="${versionPropFile}" quiet="true" /> 1027 1028 <propertyfile file="${versionPropFile}" comment="Generated by netty-parent/pom.xml"> 1029 <entry key="${project.artifactId}.version" value="${project.version}" /> 1030 <entry key="${project.artifactId}.buildDate" type="date" value="now" pattern="yyyy-MM-dd HH:mm:ss Z" /> 1031 <entry key="${project.artifactId}.commitDate" value="${commitDate}" /> 1032 <entry key="${project.artifactId}.shortCommitHash" value="${shortCommitHash}" /> 1033 <entry key="${project.artifactId}.longCommitHash" value="${longCommitHash}" /> 1034 <entry key="${project.artifactId}.repoStatus" value="${repoStatus}" /> 1035 </propertyfile> 1036 </target> 1037 </configuration> 1038 </execution> 1039 </executions> 1040 <dependencies> 1041 <dependency> 1042 <groupId>org.apache.ant</groupId> 1043 <artifactId>ant</artifactId> 1044 <version>1.9.7</version> 1045 </dependency> 1046 <dependency> 1047 <groupId>org.apache.ant</groupId> 1048 <artifactId>ant-launcher</artifactId> 1049 <version>1.9.7</version> 1050 </dependency> 1051 <dependency> 1052 <groupId>ant-contrib</groupId> 1053 <artifactId>ant-contrib</artifactId> 1054 <version>1.0b3</version> 1055 <exclusions> 1056 <exclusion> 1057 <groupId>ant</groupId> 1058 <artifactId>ant</artifactId> 1059 </exclusion> 1060 </exclusions> 1061 </dependency> 1062 </dependencies> 1063 </plugin> 1064 </plugins> 1065 1066 <pluginManagement> 1067 <plugins> 1068 <plugin> 1069 <artifactId>maven-enforcer-plugin</artifactId> 1070 <version>1.4.1</version> 1071 <dependencies> 1072 <!-- Provides the 'requireFilesContent' enforcer rule. --> 1073 <dependency> 1074 <groupId>com.ceilfors.maven.plugin</groupId> 1075 <artifactId>enforcer-rules</artifactId> 1076 <version>1.2.0</version> 1077 </dependency> 1078 </dependencies> 1079 </plugin> 1080 <!-- keep surefire and failsafe in sync --> 1081 <plugin> 1082 <artifactId>maven-surefire-plugin</artifactId> 1083 <version>2.19.1</version> 1084 </plugin> 1085 <!-- keep surefire and failsafe in sync --> 1086 <plugin> 1087 <artifactId>maven-failsafe-plugin</artifactId> 1088 <version>2.19.1</version> 1089 </plugin> 1090 <plugin> 1091 <artifactId>maven-clean-plugin</artifactId> 1092 <version>3.0.0</version> 1093 </plugin> 1094 <plugin> 1095 <artifactId>maven-resources-plugin</artifactId> 1096 <version>3.0.1</version> 1097 </plugin> 1098 <plugin> 1099 <groupId>org.ops4j.pax.exam</groupId> 1100 <artifactId>maven-paxexam-plugin</artifactId> 1101 <version>1.2.4</version> 1102 </plugin> 1103 <plugin> 1104 <artifactId>maven-jar-plugin</artifactId> 1105 <version>3.0.2</version> 1106 <executions> 1107 <execution> 1108 <id>default-jar</id> 1109 <configuration> 1110 <archive> 1111 <manifest> 1112 <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 1113 </manifest> 1114 <index>true</index> 1115 <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> 1116 </archive> 1117 </configuration> 1118 </execution> 1119 </executions> 1120 </plugin> 1121 <plugin> 1122 <artifactId>maven-dependency-plugin</artifactId> 1123 <version>2.10</version> 1124 </plugin> 1125 <plugin> 1126 <artifactId>maven-assembly-plugin</artifactId> 1127 <version>2.6</version> 1128 </plugin> 1129 <plugin> 1130 <!-- Do NOT upgrade --> 1131 <artifactId>maven-jxr-plugin</artifactId> 1132 <version>2.2</version> 1133 </plugin> 1134 <plugin> 1135 <artifactId>maven-antrun-plugin</artifactId> 1136 <version>1.8</version> 1137 <dependencies> 1138 <dependency> 1139 <groupId>ant-contrib</groupId> 1140 <artifactId>ant-contrib</artifactId> 1141 <version>1.0b3</version> 1142 <exclusions> 1143 <exclusion> 1144 <groupId>ant</groupId> 1145 <artifactId>ant</artifactId> 1146 </exclusion> 1147 </exclusions> 1148 </dependency> 1149 </dependencies> 1150 </plugin> 1151 <plugin> 1152 <groupId>org.codehaus.mojo</groupId> 1153 <artifactId>build-helper-maven-plugin</artifactId> 1154 <version>1.10</version> 1155 </plugin> 1156 <plugin> 1157 <groupId>org.fusesource.hawtjni</groupId> 1158 <artifactId>maven-hawtjni-plugin</artifactId> 1159 <version>1.14</version> 1160 </plugin> 1161 <plugin> 1162 <groupId>kr.motd.maven</groupId> 1163 <artifactId>exec-maven-plugin</artifactId> 1164 <version>1.0.0.Final</version> 1165 </plugin> 1166 <plugin> 1167 <groupId>org.apache.maven.plugins</groupId> 1168 <artifactId>maven-shade-plugin</artifactId> 1169 <version>2.4.3</version> 1170 </plugin> 1171 1172 <!-- Workaround for the 'M2E plugin execution not covered' problem. 1173 See: http://wiki.eclipse.org/M2E_plugin_execution_not_covered --> 1174 <plugin> 1175 <groupId>org.eclipse.m2e</groupId> 1176 <artifactId>lifecycle-mapping</artifactId> 1177 <version>1.0.0</version> 1178 <configuration> 1179 <lifecycleMappingMetadata> 1180 <pluginExecutions> 1181 <pluginExecution> 1182 <pluginExecutionFilter> 1183 <groupId>org.apache.maven.plugins</groupId> 1184 <artifactId>maven-antrun-plugin</artifactId> 1185 <versionRange>[1.7,)</versionRange> 1186 <goals> 1187 <goal>run</goal> 1188 </goals> 1189 </pluginExecutionFilter> 1190 <action> 1191 <ignore /> 1192 </action> 1193 </pluginExecution> 1194 <pluginExecution> 1195 <pluginExecutionFilter> 1196 <groupId>org.apache.maven.plugins</groupId> 1197 <artifactId>maven-checkstyle-plugin</artifactId> 1198 <versionRange>[1.0,)</versionRange> 1199 <goals> 1200 <goal>check</goal> 1201 </goals> 1202 </pluginExecutionFilter> 1203 <action> 1204 <ignore /> 1205 </action> 1206 </pluginExecution> 1207 <pluginExecution> 1208 <pluginExecutionFilter> 1209 <groupId>org.apache.maven.plugins</groupId> 1210 <artifactId>maven-enforcer-plugin</artifactId> 1211 <versionRange>[1.0,)</versionRange> 1212 <goals> 1213 <goal>enforce</goal> 1214 </goals> 1215 </pluginExecutionFilter> 1216 <action> 1217 <ignore /> 1218 </action> 1219 </pluginExecution> 1220 <pluginExecution> 1221 <pluginExecutionFilter> 1222 <groupId>org.apache.maven.plugins</groupId> 1223 <artifactId>maven-clean-plugin</artifactId> 1224 <versionRange>[1.0,)</versionRange> 1225 <goals> 1226 <goal>clean</goal> 1227 </goals> 1228 </pluginExecutionFilter> 1229 <action> 1230 <ignore /> 1231 </action> 1232 </pluginExecution> 1233 <pluginExecution> 1234 <pluginExecutionFilter> 1235 <groupId>org.apache.felix</groupId> 1236 <artifactId>maven-bundle-plugin</artifactId> 1237 <versionRange>[2.4,)</versionRange> 1238 <goals> 1239 <goal>manifest</goal> 1240 </goals> 1241 </pluginExecutionFilter> 1242 <action> 1243 <ignore /> 1244 </action> 1245 </pluginExecution> 1246 <pluginExecution> 1247 <pluginExecutionFilter> 1248 <groupId>org.fusesource.hawtjni</groupId> 1249 <artifactId>maven-hawtjni-plugin</artifactId> 1250 <versionRange>[1.10,)</versionRange> 1251 <goals> 1252 <goal>generate</goal> 1253 <goal>build</goal> 1254 </goals> 1255 </pluginExecutionFilter> 1256 <action> 1257 <ignore /> 1258 </action> 1259 </pluginExecution> 1260 <pluginExecution> 1261 <pluginExecutionFilter> 1262 <groupId>org.apache.maven.plugins</groupId> 1263 <artifactId>maven-dependency-plugin</artifactId> 1264 <versionRange>[2.8,)</versionRange> 1265 <goals> 1266 <goal>get</goal> 1267 <goal>copy</goal> 1268 <goal>properties</goal> 1269 </goals> 1270 </pluginExecutionFilter> 1271 <action> 1272 <ignore /> 1273 </action> 1274 </pluginExecution> 1275 </pluginExecutions> 1276 </lifecycleMappingMetadata> 1277 </configuration> 1278 </plugin> 1279 </plugins> 1280 </pluginManagement> 1281 </build> 1282 </project> 1283