You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Paul Jackson (JIRA)" <ji...@apache.org> on 2016/10/10 19:41:20 UTC
[jira] [Commented] (TINKERPOP-1493) Groovy project doesn't build on
Windows
[ https://issues.apache.org/jira/browse/TINKERPOP-1493?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15563267#comment-15563267 ]
Paul Jackson commented on TINKERPOP-1493:
-----------------------------------------
I attempted to create a pull request for this, but after I forked the master branch the gremlin-groovy tests are skipping DependencyGrabberIntegrateTest for a reason that wasn't obvious to me.
At any rate, the key lines of code (in 3.2.2) are in DependencyGrabberTest.java line 36:
{code}private static final File extTestDir = new File(TestHelper.makeTestDataDirectory(DependencyGrabberTest.class));{code}
and these methods in DependencyGrabber.groovy
{code}
private Set<URI> getAdditionalDependencies(final Path extPath, final Artifact artifact) {
try {
def pathToInstalled = extPath.resolve(artifact.artifact + "-" + artifact.version + ".jar")
final JarFile jar = new JarFile(pathToInstalled.toFile())
try {
final Manifest manifest = jar.getManifest()
def attrLine = manifest.mainAttributes.getValue("Gremlin-Plugin-Dependencies")
def additionalDependencies = [] as Set<URI>
if (attrLine != null) {
def splitLine = attrLine.split(";")
splitLine.each {
def artifactBits = it.split(":")
def additional = new Artifact(artifactBits[0], artifactBits[1], artifactBits[2])
final def additionalDep = makeDepsMap(additional)
additionalDependencies.addAll(Grape.resolve([classLoader: this.classLoaderToUse], null, additionalDep))
}
}
return additionalDependencies
} finally {
jar.close()
}
} catch (Exception ex) {
throw new RuntimeException(ex)
}
}
{code}
{code}
private Set<URI> getAdditionalDependencies(final Path extPath, final Artifact artifact) {
try {
def pathToInstalled = extPath.resolve(artifact.artifact + "-" + artifact.version + ".jar")
final JarFile jar = new JarFile(pathToInstalled.toFile())
try {
final Manifest manifest = jar.getManifest()
def attrLine = manifest.mainAttributes.getValue("Gremlin-Plugin-Dependencies")
def additionalDependencies = [] as Set<URI>
if (attrLine != null) {
def splitLine = attrLine.split(";")
splitLine.each {
def artifactBits = it.split(":")
def additional = new Artifact(artifactBits[0], artifactBits[1], artifactBits[2])
final def additionalDep = makeDepsMap(additional)
additionalDependencies.addAll(Grape.resolve([classLoader: this.classLoaderToUse], null, additionalDep))
}
}
return additionalDependencies
} finally {
jar.close()
}
} catch (Exception ex) {
throw new RuntimeException(ex)
}
}
{code}
where jar is closed in a finally block. Hope this helps.
> Groovy project doesn't build on Windows
> ---------------------------------------
>
> Key: TINKERPOP-1493
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1493
> Project: TinkerPop
> Issue Type: Bug
> Components: groovy
> Affects Versions: 3.2.2
> Reporter: Paul Jackson
> Priority: Minor
>
> Builds on Windows fail for two reasons. First the line to create extTestDir is creating a path consisting of two full paths concatenated together. The second drive letter is seen as an illegal character:
> {code}private static final File extTestDir = new File(System.getProperty("user.dir"), TestHelper.makeTestDataDirectory(DependencyGrabberTest.class));{code}
> Second, when it comes time to delete the directory it is locked. This is because some instances of JarFile are created on it but not closed.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)