summaryrefslogtreecommitdiff
path: root/plugins/ant/jps-plugin
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2013-05-08 15:46:07 -0700
committerTor Norbye <tnorbye@google.com>2013-05-08 15:46:07 -0700
commita6eac331b3d9f0d4168b12356ea256c83f4e9c05 (patch)
tree923ceb497c43ea183351321bb4b9e388851a7854 /plugins/ant/jps-plugin
parent934b9431b0b827a132df794e307fe5a2b70de00b (diff)
downloadidea-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')
-rw-r--r--plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/build/AntArtifactBuildTaskProvider.java8
-rw-r--r--plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntBuildFileOptions.java13
-rw-r--r--plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntConfiguration.java7
-rw-r--r--plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntExtensionService.java11
-rw-r--r--plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntBuildFileOptionsImpl.java25
-rw-r--r--plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntConfigurationImpl.java16
-rw-r--r--plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntModelSerializerExtension.java7
-rw-r--r--plugins/ant/jps-plugin/testData/ant-project/.idea/ant.xml4
-rw-r--r--plugins/ant/jps-plugin/testSrc/org/jetbrains/jps/ant/JpsAntSerializationTest.java3
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);