| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| |
| Copyright (c) 1997, 2019 Oracle and/or its affiliates. All rights reserved. |
| |
| This program and the accompanying materials are made available under the |
| terms of the Eclipse Public License v. 2.0, which is available at |
| http://www.eclipse.org/legal/epl-2.0. |
| |
| This Source Code may also be made available under the following Secondary |
| Licenses when the conditions for such availability set forth in the |
| Eclipse Public License v. 2.0 are satisfied: GNU General Public License, |
| version 2 with the GNU Classpath Exception, which is available at |
| https://www.gnu.org/software/classpath/license.html. |
| |
| SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 |
| |
| --> |
| |
| <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"> |
| |
| <parent> |
| <groupId>org.glassfish.main</groupId> |
| <artifactId>glassfish-nucleus-parent</artifactId> |
| <version>5.1.0-SNAPSHOT</version> |
| <relativePath>../pom.xml</relativePath> |
| </parent> |
| <groupId>org.glassfish.main.bean-validator</groupId> |
| <modelVersion>4.0.0</modelVersion> |
| <artifactId>bean-validator</artifactId> |
| <name>javax.validation:${javax.validation.version} as OSGi bundle</name> |
| <description>JSR 380's RI, Hibernate Validator version ${hibernate-validator.version} and its dependencies repackaged as OSGi bundle</description> |
| |
| <properties> |
| <findbugs.skip>true</findbugs.skip> |
| </properties> |
| |
| <developers> |
| <developer> |
| <id>ss141213</id> |
| <name>Sahoo</name> |
| <organization>Sun Microsystems, Inc.</organization> |
| <roles> |
| <role>developer</role> |
| </roles> |
| </developer> |
| </developers> |
| |
| <build> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-jar-plugin</artifactId> |
| <configuration> |
| <useDefaultManifestFile>true</useDefaultManifestFile> |
| <archive> |
| <manifest> |
| <addClasspath>true</addClasspath> |
| <classpathLayoutType>custom</classpathLayoutType> |
| <customClasspathLayout>${artifact.artifactId}.${artifact.extension}</customClasspathLayout> |
| </manifest> |
| </archive> |
| <excludes> |
| <exclude>**/.ade_path/**</exclude> |
| </excludes> |
| </configuration> |
| </plugin> |
| |
| <plugin> |
| <groupId>org.apache.felix</groupId> |
| <artifactId>maven-bundle-plugin</artifactId> |
| <version>2.4.0</version> |
| <configuration> |
| <instructions> |
| <Embed-Dependency> |
| <!-- Only specify root artifacts that need to be embedded, everything else |
| will be pulled in automatically based on Private-Package settings. --> |
| *; artifactId=hibernate-validator; inline=true |
| </Embed-Dependency> |
| <Export-Package> |
| javax.validation.*; version=${javax.validation.osgi.version}, |
| org.hibernate.validator.*; version=${hibernate-validator.version}, |
| org.glassfish.validation; version=${hibernate-validator.version} |
| </Export-Package> |
| |
| <Private-Package> |
| <!-- JBoss logging is used by Hibernate Validator as of version 4.3.0.Final. |
| We must repackage it privately in this bundle. |
| --> |
| org.jboss.logging.*,com.fasterxml.* |
| </Private-Package> |
| |
| <Import-Package> |
| <!-- |
| - bean validator has optional dependency on JPA API. More over, it relies on |
| JPA 2.0, as it tries to dynamically load javax.persistence.PersistenceUtil.class, |
| which is a JPA 2 class. |
| - jboss.logging has the following optional dependencies (see manifest in |
| jboss-logging-*.jar): |
| org.apache.log4j, org.jboss.logmanager, org.slf4j, org.slf4j.spi |
| - Hibernate Validator has optional dependencies on (see manifest in |
| hibernate-validator-*.jar): javax.persistence, org.joda.time, org.jsoup, org.jsoup.safety |
| javax.enterprise.inject.*; resolution:=optional, |
| --> |
| org.slf4j; org.slf4j.spi; org.slf4j.helpers; version=${slf4j.version}; resolution:=optional, |
| javax.persistence.*; version="2.0"; resolution:=optional, |
| org.joda.time; resolution:=optional; version="[2.0.0,3.0.0)", |
| javax.money;version="[1.0.0,2.0.0)";resolution:=optional, |
| org.jsoup.*; resolution:=optional; version="[1.5.2,2.0.0)", |
| org.apache.log4j; resolution:=optional,javax.script.*;version="0", |
| org.jboss.logmanager; resolution:=optional, |
| javax.el;version="[2.2,4]", |
| com.sun.el, |
| com.sun.el.*, |
| com.sun.el.lang.*, |
| com.sun.el.util.*, |
| javax.enterprise.inject.*; resolution:=optional, |
| javax.enterprise.context.*; resolution:=optional, |
| javax.enterprise.event.*; resolution:=optional, |
| javax.enterprise.util.*; resolution:=optional, |
| javax.interceptor.*; resolution:=optional, |
| com.thoughtworks.paranamer.*; resolution:=optional, |
| javafx.beans.value.*; resolution:=optional, |
| javafx.beans.property.*; resolution:=optional, |
| javafx.application; resolution:=optional, |
| org.apache.logging.log4j.*; resolution:=optional, |
| org.hibernate.validator.*; version=${hibernate-validator.version}, |
| * |
| </Import-Package> |
| <!-- |
| See https://hibernate.onjira.com/browse/HV-562 which I have filed against hibernate validator. |
| It's a bug in hibernate validator the way it detects JPA. It uses thread's context classloader to |
| see if JPA classes are available and then goes onto instantiate its JPATraversableResolver which |
| has staic dependency on JPA classes. It should have used its own class loader to detect existence |
| of JPA classes. If we don't add this DynamicImport-Package, what could happen is that at the time |
| of resolution of hibernate-validator, it's optional dependency on javax.persistence may not be |
| satisfied, so this bundle won't be able to load jpa classes, yet when it uses TCL to detect JPA, |
| that might return true. Based on this outcome, it could go onto use JPATraversableResolver and |
| eventually fail with NCDFE. Adding a DynamicImport-Package helps rewiring this bundle to JPA late. |
| --> |
| <DynamicImport-Package>javax.persistence; javax.persistence.*; version="2.0"</DynamicImport-Package> |
| <Implementation-Version> |
| ${hibernate-validator.version} |
| </Implementation-Version> |
| </instructions> |
| <!-- Maven uses the output directory (target/classes) |
| rather than the final bundle, when compiling against |
| projects in the same reactor (ie. the same build). |
| Since this jar comprises of classes that come from |
| some other jar and other modules depend on this |
| artifact, we need to unpack. |
| --> |
| <unpackBundle>true</unpackBundle> |
| </configuration> |
| <executions> |
| <execution> |
| <id>osgi-bundle</id> |
| <phase>package</phase> |
| <goals> |
| <goal>bundle</goal> |
| </goals> |
| </execution> |
| </executions> |
| </plugin> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-dependency-plugin</artifactId> |
| <executions> |
| <execution> |
| <id>get-sources</id> |
| <phase>process-sources</phase> |
| <goals> |
| <goal>unpack</goal> |
| </goals> |
| <configuration> |
| <outputDirectory>${project.build.directory}/sources</outputDirectory> |
| <stripVersion>true</stripVersion> |
| <artifactItems> |
| <artifactItem> |
| <groupId>org.hibernate.validator</groupId> |
| <artifactId>hibernate-validator</artifactId> |
| <version>${hibernate-validator.version}</version> |
| <classifier>sources</classifier> |
| <overWrite>false</overWrite> |
| </artifactItem> |
| </artifactItems> |
| </configuration> |
| </execution> |
| </executions> |
| </plugin> |
| <plugin> |
| <groupId>org.codehaus.mojo</groupId> |
| <artifactId>build-helper-maven-plugin</artifactId> |
| <executions> |
| <execution> |
| <id>add-source</id> |
| <phase>compile</phase> |
| <goals> |
| <goal>add-source</goal> |
| </goals> |
| <configuration> |
| <sources> |
| <source>${project.build.directory}/sources</source> |
| </sources> |
| </configuration> |
| </execution> |
| </executions> |
| </plugin> |
| </plugins> |
| </build> |
| <dependencies> |
| <dependency> |
| <groupId>org.hibernate.validator</groupId> |
| <artifactId>hibernate-validator</artifactId> |
| <optional>true</optional> |
| </dependency> |
| <!-- This dependency is not required in latest hibernate jars. Keeping this in commented form for reference. |
| <dependency>--> |
| <!-- |
| Although hibernate validator uses maven-shade-plugin to repackage com.googlecode.jtype classes |
| bu org.hibernate.validator.jtype classes, the shade plugin seems to leave behind some |
| constant pool entries referring to google classes, so we need to package google jtype classes as well. |
| I have asked Emmanuel Bernard about this. It appears to be a bug in shade plugin or HV. |
| Because of shade-plugin, the dependency is remove from hibernate-validator pom, so we need to add it |
| here so that we can package these classes. |
| --> |
| <!--<groupId>com.googlecode.jtype</groupId> |
| <artifactId>jtype</artifactId> |
| <optional>true</optional> |
| </dependency>--> |
| <dependency> |
| <groupId>org.jboss.logging</groupId> |
| <artifactId>jboss-logging</artifactId> |
| <optional>true</optional> |
| </dependency> |
| <!-- |
| Remove this once HK2 config bean generation issue is fixed when using 2.0.0 based version of javax.validation APIs. |
| Maven bundle plugin while determining dependencies of hibernate-validator will find javax.validation.validation-api in its |
| dependencies list and pick the version value based on the javax.validation.validation-api dependency defined |
| in parent project i.e., nuclues' pom.xml. |
| Hence explicitly adding the required version as we use different version for compilation purposes. |
| --> |
| <dependency> |
| <groupId>javax.validation</groupId> |
| <artifactId>validation-api</artifactId> |
| <version>${javax.validation.version}</version> |
| <optional>true</optional> |
| </dependency> |
| <dependency> |
| <groupId>org.jboss.logging</groupId> |
| <artifactId>jboss-logging-annotations</artifactId> |
| <optional>true</optional> |
| </dependency> |
| </dependencies> |
| |
| <!-- |
| This module repackages various maven artifacts and artifacts like hibernate-validator does not |
| have java-docs published. Hence, we cannot repackage the java-docs. We skip java-doc |
| generation and use empty java-doc plugin |
| to make Nexus release job succeed. |
| --> |
| <profiles> |
| <profile> |
| <!-- generate empty javadoc jar --> |
| <id>release-phase2</id> |
| <activation> |
| <activeByDefault>false</activeByDefault> |
| </activation> |
| <build> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-javadoc-plugin</artifactId> |
| <configuration> |
| <skip>true</skip> |
| </configuration> |
| </plugin> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-jar-plugin</artifactId> |
| <executions> |
| <execution> |
| <id>create-empty-javadoc-jar</id> |
| <goals> |
| <goal>jar</goal> |
| </goals> |
| <configuration> |
| <classesDirectory> |
| ${project.build.directory}/javadoc |
| </classesDirectory> |
| <classifier>javadoc</classifier> |
| </configuration> |
| </execution> |
| </executions> |
| </plugin> |
| </plugins> |
| </build> |
| </profile> |
| </profiles> |
| </project> |