}
// If libs were extracted, put in cache and return
if (libDirExtracted.isDirectory())
{
FileFilter fileFilter = new WildcardFileFilter("*.jar");
File[] files = libDirExtracted.listFiles(fileFilter);
URL[] libUrls = new URL[files.length];
try
{
for (int i = 0; i < files.length; i++)
{
libUrls[i] = files[i].toURI().toURL();
}
}
catch (Exception e)
{
throw new JqmPayloadException("Could not handle internal lib directory", e);
}
// Put in cache
putInCache(libUrls, jd.getApplicationName());
return;
}
}
// 3rd: if pom, use pom!
if (pomFile.exists() && !libDir.exists())
{
jqmlogger.trace("Reading a pom file");
List<GlobalParameter> repolist = em
.createQuery("SELECT gp FROM GlobalParameter gp WHERE gp.key = :repo", GlobalParameter.class)
.setParameter("repo", "mavenRepo").getResultList();
boolean withCentral = false;
ConfigurableMavenResolverSystem resolver = Maven.configureResolver();
for (GlobalParameter gp : repolist)
{
if (gp.getValue().contains("repo1.maven.org"))
{
withCentral = true;
}
resolver = resolver.withRemoteRepo(MavenRemoteRepositories.createRemoteRepository(gp.getId().toString(), gp.getValue(),
"default").setUpdatePolicy(MavenUpdatePolicy.UPDATE_POLICY_NEVER));
}
resolver.withMavenCentralRepo(withCentral);
File[] depFiles = null;
try
{
depFiles = resolver.loadPomFromFile(pomFile).importRuntimeDependencies()
.resolve().withTransitivity().asFile();
}
catch (IllegalArgumentException e)
{
// Happens when no dependencies inside pom, which is a weird use of the feature...
jqmlogger.trace("No dependencies inside pom.xml file - no libs will be used", e);
depFiles = new File[0];
}
int size = 0;
for (File artifact : depFiles)
{
if (!"pom".equals(FilenameUtils.getExtension(artifact.getName())))
{
size++;
}
}
URL[] tmp = new URL[size];
int i = 0;
for (File artifact : depFiles)
{
if ("pom".equals(FilenameUtils.getExtension(artifact.getName())))
{
continue;
}
try
{
tmp[i] = artifact.toURI().toURL();
}
catch (MalformedURLException e)
{
throw new JqmPayloadException("Incorrect dependency in POM file", e);
}
i++;
}
// Put in cache
putInCache(tmp, jd.getApplicationName());
// Cleanup
if (pomFromJar && !pomFile.delete())
{
jqmlogger.warn("Could not delete the temp pom file extracted from the jar.");
}
return;
}
// 4: if lib, use lib... (lib has priority over pom)
if (libDir.exists())
{
jqmlogger.trace("Using the lib directory " + libDir.getAbsolutePath() + " as the source for dependencies");
FileFilter fileFilter = new WildcardFileFilter("*.jar");
File[] files = libDir.listFiles(fileFilter);
URL[] tmp = new URL[files.length];
for (int i = 0; i < files.length; i++)
{
try