diff options
author | Tor Norbye <tnorbye@google.com> | 2013-05-08 15:46:07 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2013-05-08 15:46:07 -0700 |
commit | a6eac331b3d9f0d4168b12356ea256c83f4e9c05 (patch) | |
tree | 923ceb497c43ea183351321bb4b9e388851a7854 /plugins/ant/jps-plugin | |
parent | 934b9431b0b827a132df794e307fe5a2b70de00b (diff) | |
download | idea-a6eac331b3d9f0d4168b12356ea256c83f4e9c05.tar.gz |
Snapshot f5ae6e3be7e12e1ef9e12f48fe3a674266288e4e from master branch of git://git.jetbrains.org/idea/community.git
Change-Id: I756af70fb2910aa2687e94e28338fb9727bce518
Diffstat (limited to 'plugins/ant/jps-plugin')
9 files changed, 84 insertions, 10 deletions
diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/build/AntArtifactBuildTaskProvider.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/build/AntArtifactBuildTaskProvider.java index dd5864a11631..19b9eb8fb4a3 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/build/AntArtifactBuildTaskProvider.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/build/AntArtifactBuildTaskProvider.java @@ -51,6 +51,7 @@ import org.jetbrains.jps.util.JpsPathUtil; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -150,9 +151,10 @@ public class AntArtifactBuildTaskProvider extends ArtifactBuildTaskProvider { } } - - for (BuildFileProperty property : myExtension.getAntProperties()) { - programParams.add("-D" + property.getPropertyName() + "=" + property.getPropertyValue()); + for (List<BuildFileProperty> properties : Arrays.asList(myExtension.getAntProperties(), options.getProperties())) { + for (BuildFileProperty property : properties) { + programParams.add("-D" + property.getPropertyName() + "=" + property.getPropertyValue()); + } } programParams.add("-buildfile"); final String buildFilePath = JpsPathUtil.urlToPath(myExtension.getFileUrl()); diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntBuildFileOptions.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntBuildFileOptions.java index a6d3f265db3a..7f0f94d4807f 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntBuildFileOptions.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntBuildFileOptions.java @@ -15,6 +15,8 @@ */ package org.jetbrains.jps.ant.model; +import com.intellij.lang.ant.config.impl.BuildFileProperty; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -36,5 +38,16 @@ public interface JpsAntBuildFileOptions { boolean isUseProjectDefaultAnt(); + void setUseProjectDefaultAnt(boolean useProjectDefaultAnt); + List<String> getAdditionalClasspath(); + + void addJarPath(@NotNull String path); + + void addJarDirectory(@NotNull String directoryPath); + + @NotNull + List<BuildFileProperty> getProperties(); + + void addProperty(@NotNull String name, @NotNull String value); } diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntConfiguration.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntConfiguration.java index 6c58f95429e6..9355632c0aa5 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntConfiguration.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntConfiguration.java @@ -19,6 +19,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.model.JpsElement; +import java.util.Collection; + /** * @author nik */ @@ -28,4 +30,9 @@ public interface JpsAntConfiguration extends JpsElement { @Nullable String getProjectDefaultAntName(); + + void setProjectDefaultAntName(@Nullable String projectDefaultAntName); + + @NotNull + Collection<JpsAntBuildFileOptions> getOptionsForAllBuildFiles(); } diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntExtensionService.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntExtensionService.java index 61a7c99d73b7..6be70de6f4b2 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntExtensionService.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntExtensionService.java @@ -32,6 +32,7 @@ import org.jetbrains.jps.model.artifact.JpsArtifact; import java.io.File; import java.util.Collections; +import java.util.HashMap; /** * @author nik @@ -68,6 +69,16 @@ public class JpsAntExtensionService { return project.getContainer().getChild(JpsAntConfigurationImpl.ROLE); } + @NotNull + public static JpsAntConfiguration getOrCreateAntConfiguration(@NotNull JpsProject project) { + JpsAntConfiguration configuration = getAntConfiguration(project); + if (configuration != null) { + return configuration; + } + JpsAntConfigurationImpl antConfiguration = new JpsAntConfigurationImpl(new HashMap<String, JpsAntBuildFileOptions>(), null); + return project.getContainer().setChild(JpsAntConfigurationImpl.ROLE, antConfiguration); + } + @Nullable private static JpsAntInstallation getBundledAntInstallation() { String antPath = System.getProperty(BUNDLED_ANT_PATH_PROPERTY); diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntBuildFileOptionsImpl.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntBuildFileOptionsImpl.java index ddce091d278b..4217ad60b27d 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntBuildFileOptionsImpl.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntBuildFileOptionsImpl.java @@ -15,6 +15,8 @@ */ package org.jetbrains.jps.ant.model.impl; +import com.intellij.lang.ant.config.impl.BuildFileProperty; +import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.ant.model.JpsAntBuildFileOptions; import java.util.ArrayList; @@ -30,8 +32,9 @@ public class JpsAntBuildFileOptionsImpl implements JpsAntBuildFileOptions { private String myCustomJdkName = ""; private boolean myUseProjectDefaultAnt = true; private String myAntInstallationName; - private List<String> myClasspath = new ArrayList<String>(); - private List<String> myJarDirectories = new ArrayList<String>(); + private final List<String> myClasspath = new ArrayList<String>(); + private final List<String> myJarDirectories = new ArrayList<String>(); + private final List<BuildFileProperty> myProperties = new ArrayList<BuildFileProperty>(); public void setMaxStackSize(int maxStackSize) { myMaxStackSize = maxStackSize; @@ -42,6 +45,7 @@ public class JpsAntBuildFileOptionsImpl implements JpsAntBuildFileOptions { myAntCommandLineParameters = antCommandLineParameters; } + @Override public void setUseProjectDefaultAnt(boolean useProjectDefaultAnt) { myUseProjectDefaultAnt = useProjectDefaultAnt; } @@ -55,11 +59,13 @@ public class JpsAntBuildFileOptionsImpl implements JpsAntBuildFileOptions { myAntInstallationName = antInstallationName; } - public void addJarPath(String path) { + @Override + public void addJarPath(@NotNull String path) { myClasspath.add(path); } - public void addJarDirectory(String directoryPath) { + @Override + public void addJarDirectory(@NotNull String directoryPath) { myJarDirectories.add(directoryPath); } @@ -100,4 +106,15 @@ public class JpsAntBuildFileOptionsImpl implements JpsAntBuildFileOptions { public List<String> getAdditionalClasspath() { return JpsAntInstallationImpl.getClasspath(myClasspath, myJarDirectories); } + + @Override + public void addProperty(@NotNull String name, @NotNull String value) { + myProperties.add(new BuildFileProperty(name, value)); + } + + @Override + @NotNull + public List<BuildFileProperty> getProperties() { + return myProperties; + } } diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntConfigurationImpl.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntConfigurationImpl.java index eb1c0c13b2b5..99f864613957 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntConfigurationImpl.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntConfigurationImpl.java @@ -24,6 +24,7 @@ import org.jetbrains.jps.model.JpsElementChildRole; import org.jetbrains.jps.model.ex.JpsElementBase; import org.jetbrains.jps.model.ex.JpsElementChildRoleBase; +import java.util.Collection; import java.util.Map; /** @@ -31,8 +32,8 @@ import java.util.Map; */ public class JpsAntConfigurationImpl extends JpsElementBase<JpsAntConfigurationImpl> implements JpsAntConfiguration { public static final JpsElementChildRole<JpsAntConfiguration> ROLE = JpsElementChildRoleBase.create("ant configuration"); - private final String myProjectDefaultAntName; - private Map<String, JpsAntBuildFileOptions> myOptionsMap = new HashMap<String, JpsAntBuildFileOptions>(); + private String myProjectDefaultAntName; + private final Map<String, JpsAntBuildFileOptions> myOptionsMap = new HashMap<String, JpsAntBuildFileOptions>(); public JpsAntConfigurationImpl(Map<String, JpsAntBuildFileOptions> options, String projectDefaultAntName) { myProjectDefaultAntName = projectDefaultAntName; @@ -46,6 +47,11 @@ public class JpsAntConfigurationImpl extends JpsElementBase<JpsAntConfigurationI } @Override + public void setProjectDefaultAntName(@Nullable String projectDefaultAntName) { + myProjectDefaultAntName = projectDefaultAntName; + } + + @Override @Nullable public String getProjectDefaultAntName() { return myProjectDefaultAntName; @@ -55,6 +61,12 @@ public class JpsAntConfigurationImpl extends JpsElementBase<JpsAntConfigurationI public void applyChanges(@NotNull JpsAntConfigurationImpl modified) { } + @Override + @NotNull + public Collection<JpsAntBuildFileOptions> getOptionsForAllBuildFiles() { + return myOptionsMap.values(); + } + @NotNull @Override public JpsAntBuildFileOptions getOptions(@NotNull String buildFileUrl) { diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntModelSerializerExtension.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntModelSerializerExtension.java index b44a4e704d1e..cbf7302d5ede 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntModelSerializerExtension.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntModelSerializerExtension.java @@ -149,6 +149,13 @@ public class JpsAntModelSerializerExtension extends JpsModelSerializerExtension options.addJarDirectory(JpsPathUtil.urlToPath(dirUrl)); } } + for (Element propertyTag : JDOMUtil.getChildren(buildFileTag.getChild("properties"), "property")) { + String name = propertyTag.getAttributeValue("name"); + String value = propertyTag.getAttributeValue("value"); + if (name != null && value != null) { + options.addProperty(name, value); + } + } optionsMap.put(url, options); } Element defaultAnt = componentTag.getChild("defaultAnt"); diff --git a/plugins/ant/jps-plugin/testData/ant-project/.idea/ant.xml b/plugins/ant/jps-plugin/testData/ant-project/.idea/ant.xml index 0ba25642f233..5ed7b6479b66 100644 --- a/plugins/ant/jps-plugin/testData/ant-project/.idea/ant.xml +++ b/plugins/ant/jps-plugin/testData/ant-project/.idea/ant.xml @@ -11,7 +11,9 @@ <customJdkName value="" /> <maximumHeapSize value="128" /> <maximumStackSize value="2" /> - <properties /> + <properties> + <property name="my.property" value="its value" /> + </properties> </buildFile> <buildFile url="file://$PROJECT_DIR$/empty.xml"> <additionalClassPath /> diff --git a/plugins/ant/jps-plugin/testSrc/org/jetbrains/jps/ant/JpsAntSerializationTest.java b/plugins/ant/jps-plugin/testSrc/org/jetbrains/jps/ant/JpsAntSerializationTest.java index cb44d172b24c..cf4bb7c33490 100644 --- a/plugins/ant/jps-plugin/testSrc/org/jetbrains/jps/ant/JpsAntSerializationTest.java +++ b/plugins/ant/jps-plugin/testSrc/org/jetbrains/jps/ant/JpsAntSerializationTest.java @@ -98,6 +98,9 @@ public class JpsAntSerializationTest extends JpsSerializationTestCase { assertContainsElements(toFiles(options.getAdditionalClasspath()), new File(getAbsolutePath("lib/jdom.jar")), new File(getAbsolutePath("ant-lib/a.jar"))); + BuildFileProperty property = assertOneElement(options.getProperties()); + assertEquals("my.property", property.getPropertyName()); + assertEquals("its value", property.getPropertyValue()); String emptyFileUrl = getUrl("empty.xml"); JpsAntBuildFileOptions options2 = JpsAntExtensionService.getOptions(myProject, emptyFileUrl); |