Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

BuildModule.java 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /* *******************************************************************
  2. * Copyright (c) 1999-2001 Xerox Corporation,
  3. * 2002 Palo Alto Research Center, Incorporated (PARC).
  4. * All rights reserved.
  5. * This program and the accompanying materials are made available
  6. * under the terms of the Eclipse Public License v1.0
  7. * which accompanies this distribution and is available at
  8. * http://www.eclipse.org/legal/epl-v10.html
  9. *
  10. * Contributors:
  11. * Xerox/PARC initial implementation
  12. * ******************************************************************/
  13. package org.aspectj.internal.tools.ant.taskdefs;
  14. import java.io.File;
  15. import org.apache.tools.ant.BuildException;
  16. import org.apache.tools.ant.Location;
  17. import org.apache.tools.ant.Task;
  18. import org.apache.tools.ant.types.Path;
  19. import org.aspectj.internal.tools.build.BuildSpec;
  20. import org.aspectj.internal.tools.build.Builder;
  21. /**
  22. * Ant interface to build a product or module, including any required modules.
  23. * @see Builder
  24. */
  25. public class BuildModule extends Task { // quickie hack...
  26. public static void main(String[] args) {
  27. TestBuildModule.main(args);
  28. }
  29. private static File pathToFile(Path path) {
  30. if (null != path) {
  31. String[] list = path.list();
  32. if ((null == list) || (1 != list.length)) {
  33. throw new IllegalArgumentException("expected exactly 1 element");
  34. }
  35. return new File(list[0]);
  36. }
  37. return null;
  38. }
  39. BuildSpec buildSpec;
  40. public BuildModule() {
  41. buildSpec = new BuildSpec();
  42. setTaskName("ajbuild");
  43. }
  44. public void setModuledir(Path moduleDir) {
  45. buildSpec.moduleDir = pathToFile(moduleDir);
  46. }
  47. public void setModule(String module) { // XXX handle multiple modules, same builder
  48. buildSpec.module = module;
  49. }
  50. public void setVersion(String version) {
  51. buildSpec.version = version;
  52. }
  53. public void setBasedir(Path baseDir) {
  54. buildSpec.baseDir = pathToFile(baseDir);
  55. }
  56. public void setJardir(Path jarDir) {
  57. buildSpec.jarDir = pathToFile(jarDir);
  58. }
  59. public void setTrimtesting(boolean trimTesting) {
  60. buildSpec.trimTesting = trimTesting;
  61. }
  62. public void setAssembleall(boolean assembleAll) {
  63. buildSpec.assembleAll = assembleAll;
  64. }
  65. public void setRebuild(boolean rebuild) {
  66. buildSpec.rebuild = rebuild;
  67. }
  68. public void setFailonerror(boolean failonerror) {
  69. buildSpec.failonerror = failonerror;
  70. }
  71. public void setCreateinstaller(boolean create) {
  72. buildSpec.createInstaller = create;
  73. }
  74. public void setVerbose(boolean verbose) {
  75. buildSpec.verbose = verbose;
  76. }
  77. public void setBuildConfig(String buildConfig) {
  78. buildSpec.buildConfig = buildConfig;
  79. }
  80. // --------------------------------------------------------- product build
  81. public void setProductdir(Path productDir) {
  82. buildSpec.productDir = pathToFile(productDir);
  83. }
  84. public void setTempdir(Path tempDir) {
  85. buildSpec.tempDir = pathToFile(tempDir);
  86. }
  87. public void setDistdir(Path distdir) {
  88. buildSpec.distDir = pathToFile(distdir);
  89. }
  90. public void execute() throws BuildException {
  91. final BuildSpec buildSpec = this.buildSpec;
  92. this.buildSpec = new BuildSpec();
  93. build(buildSpec);
  94. }
  95. private void build(BuildSpec buildSpec) throws BuildException {
  96. final boolean failonerror = buildSpec.failonerror;
  97. Builder builder = null;
  98. try {
  99. // try using script first if not a product
  100. boolean built = false;
  101. if ((null == buildSpec.productDir) && (null != buildSpec.moduleDir)) {
  102. File buildScript = new File(buildSpec.moduleDir, "build.xml"); // XXXFileLiteral
  103. if (buildScript.canRead()) {
  104. built = buildByScript(buildSpec, buildScript);
  105. if (!built) {
  106. log("unable to build "
  107. + buildSpec
  108. + " using script: "
  109. + buildScript.getAbsolutePath());
  110. }
  111. }
  112. }
  113. if (!built) {
  114. builder = AntBuilder.getBuilder(
  115. buildSpec.buildConfig,
  116. getProject(),
  117. buildSpec.tempDir);
  118. if (!builder.build(buildSpec) && failonerror) {
  119. Location loc = getLocation();
  120. throw new BuildException("error building " + buildSpec, loc);
  121. }
  122. }
  123. } catch (BuildException e) {
  124. throw e;
  125. } catch (Throwable t) {
  126. Location loc = getLocation();
  127. throw new BuildException("error building " + buildSpec, t, loc);
  128. } finally {
  129. if (null != builder) {
  130. builder.cleanup();
  131. }
  132. }
  133. }
  134. boolean buildByScript(BuildSpec buildSpec, File buildScript)
  135. throws BuildException {
  136. return false;
  137. }
  138. }