diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/packaging/JavaFxArtifactProperties.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/packaging/JavaFxArtifactProperties.java index eac2e9e18d15..13d100dbe188 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/packaging/JavaFxArtifactProperties.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/packaging/JavaFxArtifactProperties.java @@ -71,9 +71,6 @@ public class JavaFxArtifactProperties extends ArtifactProperties element : rootArtifact.getRootElement().getChildren()) { + if (element instanceof ArtifactPackagingElement) { + final Artifact artifact = ((ArtifactPackagingElement)element) + .findArtifact(ArtifactManager.getInstance(project).getResolvingContext()); + if (artifact != null && artifact.getArtifactType() instanceof JavaFxPreloaderArtifactType) { + return artifact; + } + } + } + return null; } - + private static class JavaFxPackager extends AbstractJavaFxPackager { private final Artifact myArtifact; private final JavaFxArtifactProperties myProperties; @@ -334,34 +347,12 @@ public class JavaFxArtifactProperties extends ArtifactProperties element : myArtifact.getRootElement().getChildren()) { - if (element instanceof ArtifactPackagingElement) { - final Artifact artifact = ((ArtifactPackagingElement)element) - .findArtifact(ArtifactManager.getInstance(myCompileContext.getProject()).getResolvingContext()); - if (artifact != null && artifact.getArtifactType() instanceof JavaFxPreloaderArtifactType) { - return artifact; - } - } - } - return null; + return myProperties.getPreloaderJar(myArtifact, myCompileContext.getProject()); } @Override diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/packaging/ant/JavaFxChunkBuildExtension.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/packaging/ant/JavaFxChunkBuildExtension.java index 4f238025beee..e04411c475d8 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/packaging/ant/JavaFxChunkBuildExtension.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/packaging/ant/JavaFxChunkBuildExtension.java @@ -111,15 +111,18 @@ public class JavaFxChunkBuildExtension extends ChunkBuildExtension { ArtifactAntGenerationContext context, CompositeGenerator generator) { if (preprocessing) return; + if (!(artifact.getArtifactType() instanceof JavaFxApplicationArtifactType)) return; final CompositePackagingElement rootElement = artifact.getRootElement(); - List> children = rootElement.getChildren(); + final List> children = new ArrayList>(); String artifactFileName = rootElement.getName(); - for (PackagingElement child : children) { + for (PackagingElement child : rootElement.getChildren()) { if (child instanceof ArchivePackagingElement) { artifactFileName = ((ArchivePackagingElement)child).getArchiveFileName(); - children = ((ArchivePackagingElement)child).getChildren(); + children.addAll(((ArchivePackagingElement)child).getChildren()); + } else { + children.add(child); } } @@ -138,12 +141,28 @@ public class JavaFxChunkBuildExtension extends ChunkBuildExtension { final JavaFxArtifactProperties properties = (JavaFxArtifactProperties)artifact.getProperties(JavaFxArtifactPropertiesProvider.getInstance()); + String preloaderFiles = null; + final String preloaderJar = properties.getPreloaderJar(artifact, context.getProject()); + final String preloaderClass = properties.getPreloaderClass(artifact, context.getProject()); + if (!StringUtil.isEmptyOrSpaces(preloaderJar) && !StringUtil.isEmptyOrSpaces(preloaderClass)) { + preloaderFiles = artifactName + "_preloader_files"; + generator.add(new Tag("fx:fileset", + new Pair("id", preloaderFiles), + new Pair("requiredFor", "preloader"), + new Pair("dir", tempDirPath), + new Pair("includes", preloaderJar))); + } + //register application final String appId = artifactName + "_id"; - final Tag applicationTag = new Tag("fx:application", - new Pair("id", appId), - new Pair("name", artifactName), - new Pair("mainClass", properties.getAppClass())); + Pair[] applicationParams = {new Pair("id", appId), + new Pair("name", artifactName), + new Pair("mainClass", properties.getAppClass())}; + if (preloaderFiles != null) { + applicationParams = ArrayUtil.append(applicationParams, new Pair("preloaderClass", preloaderClass)); + } + + final Tag applicationTag = new Tag("fx:application", applicationParams); appendValuesFromPropertiesFile(applicationTag, properties.getHtmlParamFile(), "fx:htmlParam", false); //also loads fx:argument values @@ -156,6 +175,11 @@ public class JavaFxChunkBuildExtension extends ChunkBuildExtension { new Pair("destfile", tempDirPath + "/" + artifactFileName)); createJarTag.add(new Tag("fx:application", new Pair("refid", appId))); createJarTag.add(new Tag("fileset", new Pair("dir", tempDirPath))); + if (preloaderFiles != null) { + final Tag createJarResourcesTag = new Tag("fx:resources"); + createJarResourcesTag.add(new Tag("fx:fileset", new Pair("refid", preloaderFiles))); + createJarTag.add(createJarResourcesTag); + } generator.add(createJarTag); //deploy task @@ -174,6 +198,10 @@ public class JavaFxChunkBuildExtension extends ChunkBuildExtension { final Tag deployResourcesTag = new Tag("fx:resources"); deployResourcesTag.add(new Tag("fx:fileset", new Pair("dir", tempDirPath), new Pair("includes", artifactFileName))); + if (preloaderFiles != null) { + deployResourcesTag.add(new Tag("fx:fileset", new Pair("refid", preloaderFiles))); + } + deployTag.add(deployResourcesTag); generator.add(deployTag);