/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.test.integration.wildfly;
import org.hibernate.search.engine.Version;
import org.hibernate.search.test.integration.VersionTestHelper;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
import org.jboss.shrinkwrap.resolver.api.maven.strategy.RejectDependenciesStrategy;
/**
* To allow some of our integration tests to be deployed in a container without
* also bundling ShrinkWrap, we need to avoid explicit imports from ShrinkWrap:
* delegate to static helpers from this class.
*
* @author Sanne Grinovero
* @since 5.0
*/
public class PackagerHelper {
private PackagerHelper() {
//not meant to be instantiated
}
/**
* Packages which are never included among transitive dependencies of the below methods.
*/
private static String[] exclusions = new String[] {
"org.hibernate:hibernate-core",
"org.hibernate.common:hibernate-commons-annotations",
"org.hibernate.javax.persistence:hibernate-jpa-2.1-api",
"org.jboss.logging:jboss-logging",
"org.jboss.logging:jboss-logging-processor",
"dom4j:dom4j",
"xml-apis:xml-apis",
"org.jboss:jandex",
"antlr:antlr",
"org.apache.geronimo.specs:geronimo-jta_1.1_spec",
"org.javassist:javassist",
"org.jboss.jdeparser:jdeparser",
"com.sun:tools" //Always exclude this as it's not available on JDK9
};
/**
* Returns the set of dependencies defined as org.hibernate:hibernate-search-orm at
* the version being built. We use transitive dependencies to include the version
* of hibernate-search-engine and Apache Lucene at the currently built version, but
* then need to exclude the packages already provided by the application server such
* as Hibernate ORM.
*
* @return the set of dependencies a user would need to bundle in a web app
*/
public static JavaArchive[] hibernateSearchLibraries() {
return Maven.resolver()
.resolve( "org.hibernate:hibernate-search-orm:" + getCurrentVersion() )
// we need some dependencies at the right version: Lucene, search-engine, etc..
.using( new RejectDependenciesStrategy( false, exclusions ) )
.as( JavaArchive.class );
// To debug dependencies, have it dump a zip export:
//archive.as( ZipExporter.class ).exportTo( new File("test-app.war"), true );
}
public static JavaArchive[] hibernateSearchTestingLibraries() {
return Maven.resolver()
.resolve( "org.hibernate:hibernate-search-testing:" + getCurrentVersion() )
.using( new RejectDependenciesStrategy( false, exclusions ) )
.as( JavaArchive.class );
}
/**
* @return the current version of Hibernate Search
*/
private static String getCurrentVersion() {
//This will return 'null' when running the tests from Eclipse
//while having all modules open, so be prepared to fall back to build properties:
String currentVersion = Version.getVersionString();
if ( currentVersion != null ) {
return currentVersion;
}
return VersionTestHelper.getDependencyVersionHibernateSearch();
}
}