- #coding=UTF-8
-
- #
- # Windows users:
- # You need to setup your environment so that you have mvn on your PATH.
- # Maven needs that JAVA_HOME environment is set and points to a JDK
- # Python3 is required as this script uses some Python3 specific features.
- # Might work with Python2, haven't tested.
- #
- # python BuildArchetypes.py version --repo staging-repo-url
- #
-
- import subprocess, sys
- from os.path import join
-
- ## DEFAULT VARIABLES ##
-
- # ArchetypeGroupId
- archetypeGroup = "com.vaadin"
-
- # List of built archetypes
- archetypes = [
- "vaadin-archetype-widget",
- "vaadin-archetype-application",
- "vaadin-archetype-application-example",
- "vaadin-archetype-application-multimodule"
- ]
-
- # Maven GroupID
- group = "testpkg"
-
- log = None
- args = None
-
- ## BUILDING METHODS ##
-
- # Generates and modifies a maven pom file
- def generateArchetype(archetype, artifactId, repo):
- # Generate the required command line for archetype generation
- cmd = [mavenCmd, "archetype:generate"]
- cmd.append("-DarchetypeGroupId=%s" % (archetypeGroup))
- cmd.append("-DarchetypeArtifactId=%s" % (archetype))
- cmd.append("-DarchetypeVersion=%s" % (args.version))
- if hasattr(args, "repo") and args.repo != None:
- cmd.append("-DarchetypeRepository=%s" % repo)
- cmd.append("-DgroupId=%s" % (group))
- cmd.append("-DartifactId=%s" % (artifactId))
- cmd.append("-Dversion=1.0-SNAPSHOT")
- cmd.append("-DinteractiveMode=false")
- if hasattr(args, "maven") and args.maven is not None:
- cmd.extend(args.maven.strip('"').split(" "))
-
- # Generate pom.xml
- print("Generating pom.xml for archetype %s" % (archetype))
- subprocess.check_call(cmd, cwd=resultPath, stdout=log)
-
- def getDeploymentContext(archetype, version):
- return "%s-%s" % (archetype.split("-", 2)[2], version)
-
- ## DO THIS IF RUN AS A SCRIPT (not import) ##
- if __name__ == "__main__":
- from BuildHelpers import mavenValidate, copyWarFiles, getLogFile, mavenCmd, updateRepositories, getArgs, removeDir, parser, resultPath
- from DeployHelpers import deployWar
-
- # Add command line arguments for staging repos
- parser.add_argument("--repo", type=str, help="Staging repository URL", required=True)
-
- archetypesFailed = False
-
- # Parse the arguments
- args = getArgs()
-
- if hasattr(args, "artifactPath") and args.artifactPath is not None:
- raise Exception("Archetype validation build does not support artifactPath")
-
- for archetype in archetypes:
- artifactId = "test-%s-%s" % (archetype, args.version.replace(".", "-"))
- try:
- log = getLogFile(archetype)
- generateArchetype(archetype, artifactId, args.repo)
- updateRepositories(join(resultPath, artifactId), args.repo)
- mavenValidate(artifactId, logFile=log)
- warFiles = copyWarFiles(artifactId, name=archetype)
- for war in warFiles:
- try:
- deployWar(war, "%s.war" % (getDeploymentContext(archetype, args.version)))
- except Exception as e:
- print("War %s failed to deploy: %s" % (war, e))
- archetypesFailed = True
- except Exception as e:
- print("Archetype %s build failed:" % (archetype), e)
- archetypesFailed = True
- # removeDir(artifactId)
- print("")
- if archetypesFailed:
- sys.exit(1)
|