您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

BuildArchetypes.py 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #coding=UTF-8
  2. #
  3. # Windows users:
  4. # You need to setup your environment so that you have mvn on your PATH.
  5. # Maven needs that JAVA_HOME environment is set and points to a JDK
  6. # Python3 is required as this script uses some Python3 specific features.
  7. # Might work with Python2, haven't tested.
  8. #
  9. # python BuildArchetypes.py version fw-repo-id archetype-repo-id plugin-repo-id
  10. #
  11. import subprocess
  12. from BuildHelpers import mavenValidate, copyWarFiles, repo, getLogFile, mavenCmd, updateRepositories, getArgs, removeDir, parser, resultPath
  13. from DeployHelpers import deployWar
  14. ## DEFAULT VARIABLES ##
  15. # ArchetypeGroupId
  16. archetypeGroup = "com.vaadin"
  17. # List of built archetypes
  18. archetypes = [
  19. "vaadin-archetype-widget",
  20. "vaadin-archetype-application",
  21. "vaadin-archetype-application-example",
  22. "vaadin-archetype-application-multimodule"
  23. ]
  24. # Maven GroupID
  25. group = "testpkg"
  26. log = None
  27. args = None
  28. ## BUILDING METHODS ##
  29. # Generates and modifies a maven pom file
  30. def generateArchetype(archetype):
  31. artifactId = "test-%s-%s" % (archetype, args.version.replace(".", "-"))
  32. # Generate the required command line for archetype generation
  33. cmd = [mavenCmd, "archetype:generate"]
  34. cmd.append("-DarchetypeGroupId=%s" % (archetypeGroup))
  35. cmd.append("-DarchetypeArtifactId=%s" % (archetype))
  36. cmd.append("-DarchetypeVersion=%s" % (args.version))
  37. if hasattr(args, "archetype") and args.archetype != None:
  38. cmd.append("-DarchetypeRepository=%s" % (repo % (args.archetype)))
  39. cmd.append("-DgroupId=%s" % (group))
  40. cmd.append("-DartifactId=%s" % (artifactId))
  41. cmd.append("-Dversion=1.0-SNAPSHOT")
  42. cmd.append("-DinteractiveMode=false")
  43. if hasattr(args, "maven") and args.maven is not None:
  44. cmd.extends(args.maven.split(" "))
  45. # Generate pom.xml
  46. print("Generating pom.xml for archetype %s" % (archetype))
  47. subprocess.check_call(cmd, cwd=resultPath, stdout=log)
  48. # Return the artifactId so we know the name in the future
  49. return artifactId
  50. ## DO THIS IF RUN AS A SCRIPT (not import) ##
  51. if __name__ == "__main__":
  52. # Add command line arguments for staging repos
  53. parser.add_argument("framework", type=int, help="Framework repo id (comvaadin-XXXX)", nargs='?')
  54. parser.add_argument("archetype", type=int, help="Archetype repo id (comvaadin-XXXX)", nargs='?')
  55. parser.add_argument("plugin", type=int, help="Maven Plugin repo id (comvaadin-XXXX)", nargs='?')
  56. archetypesFailed = False
  57. # Parse the arguments
  58. args = getArgs()
  59. for archetype in archetypes:
  60. try:
  61. log = getLogFile(archetype)
  62. artifactId = generateArchetype(archetype)
  63. updateRepositories(artifactId)
  64. mavenValidate(artifactId, logFile=log)
  65. warFiles = copyWarFiles(artifactId, name=archetype)
  66. for war in warFiles:
  67. try:
  68. deployWar(war, "%s.war" % (archetype.split("-", 2)[2]))
  69. except Exception as e:
  70. print("War %s failed to deploy: %s" % (war, e))
  71. archetypesFailed = True
  72. except:
  73. print("Archetype %s build failed" % (archetype))
  74. archetypesFailed = True
  75. removeDir(artifactId)
  76. print("")
  77. if archetypesFailed:
  78. sys.exit(1)