.main.bean-validator.bean-validator.5.1.0.source-code.pom.xml Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bean-validator Show documentation
Show all versions of bean-validator Show documentation
JSR 380's RI, Hibernate Validator version ${hibernate-validator.version} and its dependencies repackaged as OSGi bundle
The newest version!
<?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</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>