| #!/bin/bash |
| # |
| # This script will download and setup the Jakarta EE 9.1 TCK along |
| # with all requirements such as glassfish and ant. A profile will |
| # be added to ~/.m2/settings.xml |
| # |
| # It is safe to run this script repeatedly |
| # |
| |
| TCKDIR="${1?Specify the directory where you would like the TCK to be downloaded and setup}" |
| |
| |
| TCK_URL="https://download.eclipse.org/jakartaee/platform/10/jakarta-jakartaeetck-10.0.1.zip" |
| RI_URL="https://download.eclipse.org/ee4j/glassfish/glassfish-7.0.0-M8.zip" |
| ANT_URL="https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.9-bin.zip" |
| |
| #################################################################### |
| |
| cd "$TCKDIR" || exit 1 |
| |
| TCK=$(basename $TCK_URL| perl -pe 's,.zip$,,') |
| RI=$(basename $RI_URL| perl -pe 's,.zip$,,') |
| ANT=$(basename $ANT_URL| perl -pe 's,.zip$,,') |
| |
| [ -f "$TCK.zip" ] || curl -O $TCK_URL |
| [ -f "$RI.zip" ] || curl -O $RI_URL |
| [ -f "$ANT.zip" ] || curl -O $ANT_URL |
| |
| (mkdir "$TCK" && cd "$TCK" && bsdtar --strip-components=1 -xf "../$TCK.zip") |
| (mkdir "$RI" && cd "$RI" && bsdtar --strip-components=1 -xf "../$RI.zip") |
| (mkdir -p "$TCKDIR/$TCK/tools/ant" && cd "$TCKDIR/$TCK/tools/ant" && bsdtar --strip-components=1 -xf "../../../$ANT.zip") |
| |
| M2=~/.m2/settings.xml |
| |
| # If there is no ~/.m2/settings.xml create it |
| [ -f "$M2" ] || echo '<settings> |
| </settings>' > $M2 |
| |
| # If there is no profiles section, add it |
| grep -q "<profiles>" $M2 || perl -i -pe 's,(<settings>),$1 |
| <profiles> |
| </profiles> |
| ,' $M2 |
| |
| # If there is no profiles section, add it |
| grep -q "<id>$TCK</id>" $M2 || perl -i -pe "s,(<profiles>),\$1 |
| <profile> |
| <id>$TCK</id> |
| <activation> |
| <activeByDefault>true</activeByDefault> |
| </activation> |
| <properties> |
| <jakartaee10.cts.home></jakartaee10.cts.home> |
| <jakartaee10.ri.home></jakartaee10.ri.home> |
| </properties> |
| </profile> |
| ," $M2 |
| |
| ## Update paths in ~/.m2/settings.xml |
| perl -i -pe "s,(<jakartaee10.cts.home>)[^<]*,\${1}$TCKDIR/$TCK," $M2 |
| perl -i -pe "s,(<jakartaee10.ri.home>)[^<]*,\${1}$TCKDIR/$RI/glassfish," $M2 |
| |
| |
| ################################################ |
| # |
| # create a pom.xml for the tck so it can be |
| # easily opened in IDEs that support Maven |
| # |
| ################################################ |
| (cd "$TCK" |
| |
| |
| |
| cat > pom.xml <<EOF |
| <?xml version="1.0" encoding="UTF-8"?> |
| <project xmlns="http://maven.apache.org/POM/4.0.0" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> |
| |
| <modelVersion>4.0.0</modelVersion> |
| |
| <groupId>jakartaee-tck</groupId> |
| <artifactId>jakartaee-tck</artifactId> |
| <version>10.0.1</version> |
| |
| <dependencies> |
| <dependency> |
| <groupId>org.apache.tomee</groupId> |
| <artifactId>jakartaee-api</artifactId> |
| <version>10.0.0-SNAPSHOT</version> |
| </dependency> |
| $( |
| for n in lib/*.jar; do |
| |
| artifact="$(basename "$n" | perl -pe 's,(-[0-9.]+)?.jar$,,')" |
| |
| echo " <dependency> |
| <groupId>jakartaee-tck</groupId> |
| <artifactId>$artifact</artifactId> |
| <version>1.0</version> |
| <scope>system</scope> |
| <systemPath>\${project.basedir}/$n</systemPath> |
| </dependency>" |
| done |
| ) |
| </dependencies> |
| |
| <build> |
| <sourceDirectory>src</sourceDirectory> |
| <plugins> |
| <plugin> |
| <artifactId>maven-compiler-plugin</artifactId> |
| <configuration> |
| <source>1.8</source> |
| <target>1.8</target> |
| </configuration> |
| </plugin> |
| </plugins> |
| </build> |
| </project> |
| EOF |
| |
| ) |