1 <?xml version="1.0" encoding="UTF-8"?>
3 Copyright (c) 2017/18 Politecnico di Torino and others.
5 All rights reserved. This program and the accompanying materials
6 are made available under the terms of the Apache License, Version 2.0
7 which accompanies this distribution, and is available at
8 http://www.apache.org/licenses/LICENSE-2.0
10 <project name="Verigraph" default="generate-war" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
15 <property name="root.location" location="." />
16 <!-- The location to be used for class files -->
17 <property name="docker-grpc.dir" value="${root.location}/docker/gRPC" />
18 <property name="docker-rest.dir" value="${root.location}/docker/REST" />
19 <property name="cli.dir" value="${root.location}/VerigraphCLI" />
20 <property name="src.dir" location="${root.location}/src" />
21 <property name="gen.dir" location="${root.location}/gen-src" />
22 <property name="war.dir" location="${root.location}/war" />
23 <property name="grpc.dir" value="${src.dir}/it/polito/verigraph/grpc" />
24 <property name="path.prefix" value="it/polito" />
25 <property name="build.dir" location="${root.location}/build" />
26 <property name="lib.dir" location="${root.location}/lib" />
27 <property name="schemadir" location="${root.location}/schema" />
28 <property name="schemafile" value="xml_components.xsd" />
29 <property name="toscaschemadir" location="${root.location}/schema/tosca" />
30 <property name="toscaschemafile" value="TOSCA-v1.0.xsd" />
31 <property name="toscaverigraphschemafile" value="ToscaTypes_XMLconfig.xsd" />
32 <property name="testfile" value="test.py" />
33 <property name="target" value="1.8" />
34 <property name="source" value="1.8" />
35 <property name="gen-tomcat-service.dir" location="${root.location}/target" />
36 <property name="resources.dir" location="${root.location}/webapp" />
37 <property name="gen-war.dir" location="${root.location}/war" />
38 <property name="jsonschemafolder.dir" location="${root.location}/jsonschema" />
39 <property name="test.dir" location="${root.location}/tester" />
40 <property name="iteration" value="1" />
42 <path id="z3.classpath">
43 <pathelement location="${lib.dir}/com.microsoft.z3.jar" />
47 <import file="tomcat-build.xml" />
49 <target name="mvn-init" unless="compile.classpath" xmlns:artifact="urn:maven-artifact-ant">
50 <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" classpath="lib/maven-ant-tasks-2.1.3.jar" />
51 <condition property="maven.repo.local" value="${maven.repo.local}" else="${user.home}/.m2/repository">
52 <isset property="maven.repo.local" />
54 <echo>maven.repo.local=${maven.repo.local}</echo>
55 <artifact:localRepository id="local.repository" path="${maven.repo.local}" />
56 <artifact:pom file="pom.xml" id="maven.project" />
57 <artifact:dependencies pathId="compile.classpath" filesetId="compile.fileset" useScope="compile">
58 <pom refid="maven.project" />
59 <localRepository refid="local.repository" />
60 </artifact:dependencies>
61 <artifact:dependencies pathId="test.classpath" filesetId="test.fileset" useScope="test">
62 <pom refid="maven.project" />
63 <localRepository refid="local.repository" />
64 </artifact:dependencies>
65 <artifact:dependencies pathId="runtime.classpath" filesetId="runtime.fileset" useScope="runtime">
66 <pom refid="maven.project" />
67 <localRepository refid="local.repository" />
68 </artifact:dependencies>
69 <artifact:dependencies pathId="build.classpath" filesetId="build.fileset">
70 <pom refid="maven.project" />
71 <localRepository refid="local.repository" />
72 </artifact:dependencies>
77 <mkdir dir="${build.dir}" />
78 <mkdir dir="${gen-tomcat-service.dir}" />
79 <mkdir dir="${gen-war.dir}" />
80 <mkdir dir="${gen.dir}" />
81 <mkdir dir="${lib.dir}" />
82 <get dest="${lib.dir}">
83 <url url="https://github.com/Z3Prover/z3/releases/download/z3-4.5.0/z3-4.5.0-x86-win.zip" />
84 <url url="http://central.maven.org/maven2/org/apache/maven/maven-ant-tasks/2.1.3/maven-ant-tasks-2.1.3.jar" />
86 <unzip src="${lib.dir}/z3-4.5.0-x86-win.zip" dest="${lib.dir}" overwrite="true">
88 <include name="**/**/com.microsoft.z3.jar" />
90 <mapper type="flatten" />
92 <delete file="${lib.dir}/z3-4.5.0-x86-win.zip" />
96 <target name="chk-bindings">
97 <uptodate property="generate-bindings.notRequired" targetfile="${gen.dir}/.flagfile">
99 <fileset dir="${schemadir}" includes="${schemafile}" />
100 <fileset dir="${toscaschemadir}" includes="${toscaschemafile}" />
101 <fileset dir="${toscaschemadir}" includes="${toscaverigraphschemafile}" />
106 <target name="generate-bindings" unless="generate-bindings.notRequired" depends="init, chk-bindings" description="Create the value classes">
107 <exec executable="xjc" failonerror="true">
108 <arg line="-d ${gen.dir} -p it.polito.neo4j.jaxb ${schemadir}/${schemafile}" />
110 <exec executable="xjc" failonerror="true">
111 <arg line="-d ${gen.dir} -p it.polito.tosca.jaxb ${toscaschemadir}/${toscaschemafile}" />
113 <mkdir dir="${root.location}/temp-gen" />
114 <exec executable="xjc" failonerror="true">
115 <arg line="-d ${root.location}/temp-gen -p it.polito.tosca.jaxb ${toscaschemadir}/${toscaverigraphschemafile}" />
118 <copy toDir="${gen.dir}/it/polito/tosca/jaxb" overwrite="true">
119 <file name="${root.location}/temp-gen/it/polito/tosca/jaxb/Configuration.java" />
121 <delete dir="${root.location}/temp-gen" />
123 <touch file="${gen.dir}/.flagfile" />
127 <!-- The target for compiling the Verigraph application -->
128 <target name="build-service" depends="init, generate-bindings, mvn-init">
129 <echo>Building verigraph (if needed)...</echo>
130 <javac destdir="${build.dir}" debug="${debug}" debuglevel="${debuglevel}" source="${source}" target="${target}" includeantruntime="false">
132 <path id="compile.classpath" />
133 <path id="z3.classpath" />
135 <src path="${src.dir}" />
136 <src path="${gen.dir}" />
137 <src path="${basedir}/gen-protobuf" />
138 <include name="${path.prefix}/**/*.java" />
139 <exclude name="main/proto/" />
145 <macrodef name="war-exploded">
147 <copy toDir="${gen-tomcat-service.dir}" overwrite="true">
148 <fileset dir="${resources.dir}" />
150 <copy toDir="${gen-tomcat-service.dir}" overwrite="true">
152 <include name="server.properties" />
155 <!-- copy class files to WEB-INF/classes directory -->
156 <copy toDir="${gen-tomcat-service.dir}/WEB-INF/classes" overwrite="true">
157 <fileset dir="${build.dir}">
158 <exclude name="verigraph.proto" />
159 <exclude name="src/main/proto" />
162 <!-- copy jsonschema folder to WEB-INF/classes directory -->
163 <copy toDir="${gen-tomcat-service.dir}/jsonschema" overwrite="true">
164 <fileset dir="${jsonschemafolder.dir}" />
166 <!-- copy lib files to WEB-INF/lib directory -->
167 <copy toDir="${gen-tomcat-service.dir}/maven-lib" overwrite="true">
168 <fileset refid="runtime.fileset">
171 <copy toDir="${gen-tomcat-service.dir}/WEB-INF/lib" overwrite="true" flatten="true">
172 <fileset dir="${gen-tomcat-service.dir}/maven-lib">
173 <include name="**/**/*.jar" />
176 <delete dir="${gen-tomcat-service.dir}/maven-lib" />
178 <!-- Make the jar that includes only the classes needed for verigraph models -->
179 <jar destfile="${gen-tomcat-service.dir}/WEB-INF/lib/mcnet.jar">
180 <fileset dir="${build.dir}">
181 <include name="it/polito/verigraph/mcnet/**/*.class" />
184 <!-- Copy the z3 library -->
185 <copy toDir="${gen-tomcat-service.dir}/WEB-INF/lib" overwrite="true" flatten="true">
186 <file name="${lib.dir}/com.microsoft.z3.jar" />
191 <target name="war-exploded" depends="build-service">
195 <target name="generate-war" depends="war-exploded">
196 <war destfile="${gen-war.dir}/${serviceName}.war" basedir="${gen-tomcat-service.dir}">
197 <exclude name="protoc-dependencies/" />
198 <exclude name="protoc-plugins/" />
199 <exclude name="classes/" />
204 <target name="docker-rest-build" depends="generate-war">
205 <delete file="${docker-rest.dir}/verigraph.war" />
207 <copy file="${gen-war.dir}/verigraph.war" toDir="${docker-rest.dir}" />
210 <target name="docker-grpc-build" depends="build-service">
211 <delete dir="${docker-grpc.dir}/service_lib" />
212 <mkdir dir="${docker-grpc.dir}/service_lib" />
214 <copy toDir="${docker-grpc.dir}/service_lib" flatten="true" overwrite="true">
215 <fileset refid="runtime.fileset" />
217 <copy file="${lib.dir}/com.microsoft.z3.jar" todir="${docker-grpc.dir}/service_lib" />
219 <delete file="${docker-grpc.dir}/server.properties" />
220 <delete dir="${docker-grpc.dir}/jsonschema" />
221 <copy file="${root.location}/server.properties" todir="${docker-grpc.dir}" />
222 <copydir src="${root.location}/jsonschema" dest="${docker-grpc.dir}/jsonschema" />
224 <path id="jars.path">
225 <fileset dir="${docker-grpc.dir}">
226 <include name="service_lib/*.jar" />
230 <pathconvert property="jars.mf" pathsep=" ">
231 <path refid="jars.path" />
233 <map from="" to="service_lib/" />
236 <delete file="${docker-grpc.dir}/service.jar"/>
237 <jar destfile="${docker-grpc.dir}/service.jar">
239 <attribute name="Main-Class" value="it.polito.verigraph.grpc.server.Service"/>
240 <attribute name="Class-Path" value="${jars.mf}"/>
242 <fileset dir="${root.location}/build"/>
247 <target name="build-cli-jar" depends="build-service">
248 <delete dir="${cli.dir}" />
249 <mkdir dir="${cli.dir}" />
251 <copy toDir="${cli.dir}/service_lib" flatten="true" overwrite="true">
252 <fileset refid="runtime.fileset" />
254 <copy file="${src.dir}/it/polito/verigraph/tosca/README_CLI.txt" todir="${cli.dir}" />
256 <path id="jars.path">
257 <fileset dir="${cli.dir}">
258 <include name="service_lib/*.jar" />
262 <pathconvert property="jars.mf" pathsep=" ">
263 <path refid="jars.path" />
265 <map from="" to="service_lib/" />
268 <delete file="${cli.dir}/VerigraphCLI.jar"/>
269 <jar destfile="${cli.dir}/VerigraphCLI.jar">
271 <attribute name="Main-Class" value="it.polito.verigraph.tosca.ToscaCLI"/>
272 <attribute name="Class-Path" value="${jars.mf}"/>
274 <fileset dir="${root.location}/build"/>
278 <!-- launch test python test -->
279 <target name="run-test">
280 <exec dir="${test.dir}" executable="python">
281 <arg value="${testfile}" />
282 <arg value="-iteration " />
283 <arg value="${iteration}" />
287 <!-- target for cleaning -->
288 <target name="clean">
289 <delete dir="${build.dir}" />
290 <delete dir="${gen.dir}" />
291 <delete dir="${gen-tomcat-service.dir}" />
292 <delete dir="${war.dir}" />
293 <delete dir="${lib.dir}" />
294 <delete dir="${docker-grpc.dir}/service_lib" />
295 <delete dir="${docker-grpc.dir}/jsonschema" />
296 <delete file="${docker-grpc.dir}/server.properties" />
297 <delete file="${docker-grpc.dir}/service.jar" />
298 <delete file="${docker-rest.dir}/verigraph.war" />
299 <delete dir="${cli.dir}" />