| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <project name="JMeter" default="install" basedir="." |
| xmlns:rat="antlib:org.apache.rat.anttasks" |
| xmlns:jacoco="antlib:org.jacoco.ant" |
| xmlns="antlib:org.apache.tools.ant" |
| xmlns:if="ant:if" > |
| <description> |
| |
| N.B. To build JMeter from a release you need both the binary and source archives, |
| and these must be unpacked into the same directory structure. |
| |
| To download additional jars needed for building the code and documentation: |
| |
| ant download_jars |
| |
| |
| To build JMeter from source: |
| ant [install] |
| |
| To rebuild: |
| ant clean install |
| |
| To update documentation |
| ant docs-site [-Ddocs.force=true] |
| ant docs-printable [-Ddocs.force=true] |
| To build API documentation (Javadoc) |
| ant docs-api |
| To build all the docs |
| ant docs-all [-Ddocs.force=true] |
| |
| To build all and package up the files for distribution |
| ant distribution -Djmeter.version=vvvv [-Dsvn.revision=nnnnn] |
| |
| Add -Ddisable-svnCheck=true to disable svn check, if you build from src archive or offline |
| Add -Ddisable-check-versions=true to disable matching current svn revision and JMeterVersion.java, |
| if you want build your own custom JMeter package. |
| |
| To create a nightly build (separate bin/src/lib jars): |
| ant nightly [-Dsvn.revision=nnnnn] |
| |
| To create tar and tgz of the web-site documentation (docs and api) |
| ant site [ -Djmeter.version=vvvv ] |
| |
| |
| For more info: |
| ant -projecthelp |
| |
| To diagnose usage of deprecated APIs: |
| ant -Ddeprecation=on clean compile |
| </description> |
| |
| <!-- |
| |
| Note |
| ==== |
| As with most other Apache projects, Gump (http://gump.apache.org/) is used to |
| perform automated builds and tests on JMeter. |
| |
| Gump uses its project/jmeter.xml file to determine which target to use. |
| The current setting is: <ant target="dist"> |
| |
| Any changes to the dependency list for dist may affect Gump. |
| |
| Now the dist target depends on "assume-libs-present", so if additional libraries are added to that, |
| the Gump project file for JMeter must also be updated. |
| |
| Jars that are not required by the dist target do not need to be added to the Gump project file. |
| |
| --> |
| |
| <!-- Minimal version of Apache Ant required by this Ant script --> |
| <property name="ant.version.required" value="1.9.1" /> |
| |
| <!-- check if JavaFX is available --> |
| <available classname="javafx.application.Platform" property="javafx.present" /> |
| |
| <!-- Are we running under Gump? --> |
| <property name="gump.run" value="false"/> |
| |
| <!-- The version of this file --> |
| <property name="version.build" value="$Revision$"/> |
| |
| <script language="javascript"> |
| project.setProperty('EPOCHSECONDS', new Date().getTime()); |
| </script> |
| |
| <property file="build-local.properties"/> <!-- allow local overrides --> |
| |
| <!-- Remove .gitignore from the Ant's default excludes --> |
| <!-- to allow to have the .gitignore in the source archive --> |
| <defaultexcludes remove="**/.gitignore"/> |
| |
| <!-- Findbugs task and target --> |
| <!-- |
| Findbugs is licensed under the Lesser GNU Public License |
| HomePage: http://www.cs.umd.edu/~pugh/java/bugs/ |
| |
| To use the findbugs target, download and install the findbugs binary distribution |
| Set the value of findbugs.homedir according to where you installed findbugs, for example: |
| ant findbugs -Dfindbugs.homedir=/etc/findbugs -Dfindbugs.level=medium |
| [The defaults are /findbugs and medium] |
| --> |
| <property name="findbugs.homedir" value="/findbugs" /> |
| <property name="findbugs.level" value="medium" /> |
| <property name="findbugs.xsldir" value="${findbugs.homedir}/src/xsl" /> |
| <property name="findbugs.xslname" value="fancy" /> |
| <property name="findbugs.outName" value="reports/jmeter-fb" /> |
| <property name="skip.batchtest" value="false" /> |
| <property name="skip.bug52310" value="false" /> |
| <property name="skip.bug60607" value="false" /> |
| <property name="skip.batchtest_Http4ImplPreemptiveBasicAuth" value="false" /> |
| <property name="skip.batchtest_SlowCharsFeature" value="false" /> |
| <property name="skip.batchtest_TestKeepAlive" value="false" /> |
| <property name="skip.batchtest_ResponseDecompression" value="false" /> |
| <property name="skip.test_https" value="false" /> |
| <property name="skip.test_http" value="false" /> |
| <property name="skip.test_TestDNSCacheManager.testWithCustomResolverAnd1Server" value="false" /> |
| |
| <exec executable="hostname" outputproperty="computer.hostname"/> |
| |
| <target name="findbugs" description="Run the stand-alone Findbugs detector"> |
| <echoproperties prefix="findbugs"/> |
| <mkdir dir="reports"/> |
| <taskdef name="findbugs" |
| classpath="${findbugs.homedir}/lib/findbugs-ant.jar" |
| classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/> |
| <findbugs home="${findbugs.homedir}" |
| output="xml:withMessages" |
| reportlevel="${findbugs.level}" |
| excludeFilter="fb-excludes.xml" |
| jvmargs="-Xms512m -Xmx1024m" |
| omitVisitors="InefficientStringBuffering" |
| outputFile="${findbugs.outName}.xml" > |
| <sourcePath path="${src.core}" /> |
| <sourcePath path="${src.http}" /> |
| <sourcePath path="${src.ftp}" /> |
| <sourcePath path="${src.java}" /> |
| <sourcePath path="${src.junit}" /> |
| <sourcePath path="${src.jdbc}" /> |
| <sourcePath path="${src.ldap}" /> |
| <sourcePath path="${src.mail}" /> |
| <sourcePath path="${src.components}" /> |
| <sourcePath path="${src.functions}" /> |
| <class location="${lib.dir}/jorphan.jar" /> |
| <class location="${dest.jar}/ApacheJMeter_components.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_components.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_core.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_ftp.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_functions.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_http.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_java.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_jdbc.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_jms.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_junit.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_ldap.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_mail.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_native.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_mongodb.jar"/> |
| <class location="${dest.jar}/ApacheJMeter_tcp.jar"/> |
| <class location="${dest.jar.jmeter}/ApacheJMeter.jar" /> |
| <sourcePath path="${src.jorphan}" /> |
| <sourcePath path="${src.tcp}" /> |
| <sourcePath path="${src.jms}" /> |
| <sourcePath path="${src.native}" /> |
| <sourcePath path="${src.mongodb}" /> |
| |
| <auxClasspath> |
| <fileset dir="${lib.dir}"> |
| <include name="*.jar"/> |
| </fileset> |
| </auxClasspath> |
| |
| <auxClasspath> |
| <fileset dir="${lib.opt}"> |
| <include name="*.jar"/> |
| </fileset> |
| </auxClasspath> |
| |
| <auxClasspath> |
| <fileset dir="${lib.api}"> |
| <include name="*.jar"/> |
| </fileset> |
| </auxClasspath> |
| |
| </findbugs> |
| <antcall target="findbugs-style"/> |
| <antcall target="findbugs-xsl"/> |
| </target> |
| |
| <!-- Convert findbugs XML output to CSV --> |
| <target name="findbugs-style"> |
| <xslt style="fb-csv.xsl" |
| force="true" |
| in="${findbugs.outName}.xml" |
| out="${findbugs.outName}.csv"> |
| </xslt> |
| </target> |
| |
| <!-- Convert findbugs XML output to HTML --> |
| <target name="findbugs-xsl"> |
| <xslt style="${findbugs.xsldir}/${findbugs.xslname}.xsl" |
| force="true" |
| in="${findbugs.outName}.xml" |
| out="${findbugs.outName}_${findbugs.xslname}.html"> |
| </xslt> |
| </target> |
| |
| <!-- Where the Sources live --> |
| <property name="src.dir" value="src"/> |
| <property name="src.core" value="src/core"/> |
| <property name="src.http" value="src/protocol/http"/> |
| <property name="src.ftp" value="src/protocol/ftp"/> |
| <property name="src.test" value="test/src"/> |
| <property name="src.jdbc" value="src/protocol/jdbc"/> |
| <property name="src.java" value="src/protocol/java"/> |
| <property name="src.junit" value="src/junit"/> |
| <property name="src.components" value="src/components"/> |
| <property name="src.functions" value="src/functions"/> |
| <property name="src.jorphan" value="src/jorphan"/> |
| <property name="src.ldap" value="src/protocol/ldap"/> |
| <property name="src.tcp" value="src/protocol/tcp"/> |
| <property name="src.examples" value="src/examples"/> |
| <property name="src.mail" value="src/protocol/mail"/> |
| <property name="src.jms" value="src/protocol/jms"/> |
| <property name="src.native" value="src/protocol/native"/> |
| <property name="src.mongodb" value="src/protocol/mongodb"/> |
| |
| <!-- Where the documentation sources live --> |
| <property name="src.docs" value="xdocs"/> |
| <property name="src.css" value="xdocs/css"/> |
| <property name="src.images" value="xdocs/images"/> |
| <property name="src.demos" value="xdocs/demos"/> |
| |
| <!-- Javadoc sources --> |
| <path id="srcpaths"> |
| <pathelement location="${src.core}"/> |
| <pathelement location="${src.components}"/> |
| <pathelement location="${src.functions}"/> |
| <pathelement location="${src.http}"/> |
| <pathelement location="${src.ftp}"/> |
| <pathelement location="${src.jdbc}"/> |
| <pathelement location="${src.java}"/> |
| <pathelement location="${src.junit}"/> |
| <pathelement location="${src.jorphan}"/> |
| <pathelement location="${src.ldap}"/> |
| <pathelement location="${src.tcp}"/> |
| <pathelement location="${src.examples}"/> |
| <pathelement location="${src.mail}"/> |
| <pathelement location="${src.jms}"/> |
| <pathelement location="${src.native}"/> |
| <pathelement location="${src.mongodb}"/> |
| </path> |
| |
| <!-- Temporary build directories: where the .class live --> |
| <property name="build.dir" value="build"/> |
| <property name="build.core" value="build/core"/> |
| <property name="build.http" value="build/protocol/http"/> |
| <property name="build.ftp" value="build/protocol/ftp"/> |
| <property name="build.jdbc" value="build/protocol/jdbc"/> |
| <property name="build.java" value="build/protocol/java"/> |
| <property name="build.junit" value="build/junit"/> |
| <property name="build.components" value="build/components"/> |
| <property name="build.functions" value="build/functions"/> |
| <property name="build.jorphan" value="build/jorphan"/> |
| <property name="build.ldap" value="build/protocol/ldap"/> |
| <property name="build.mail" value="build/protocol/mail"/> |
| <property name="build.tcp" value="build/protocol/tcp"/> |
| <property name="build.examples" value="build/examples"/> |
| <property name="build.jms" value="build/protocol/jms"/> |
| <property name="build.native" value="build/protocol/native"/> |
| <property name="build.mongodb" value="build/protocol/mongodb"/> |
| <property name="build.test" value="build/test"/> |
| <property name="build.res" value="build/res"/> |
| <property name="build.test-res" value="test/resources"/> |
| |
| <!-- Path prefix to allow Anakia to find stylesheets if running under Eclipse --> |
| <!-- |
| Anakia looks for stylesheets relative to the java launch directory. |
| Use the External Tools properties page to define the variable |
| as the relative path to the directory where this build file is found. |
| For example: |
| eclipse.anakia=workspace/jmeter |
| |
| An alternative is to define it as a command-line argument on the Main page; |
| this allows one to use a macro name, so is more portable. |
| For example: |
| -Declipse.anakia=workspace/${project_name} |
| WARNING: you must ensure that you have selected a file or directory in |
| the Navigator pane before attempting to run the build, or Eclipse will |
| complain that it cannot resolve the variable name, and it can mark the |
| launch configuration as having failed. |
| --> |
| <property name="eclipse.anakia" value="."/> |
| |
| <!-- Where the build result .jars will be placed --> |
| <property name="dest.jar" value="lib/ext"/> |
| <property name="dest.jar.jmeter" value="bin"/> |
| |
| <!-- Where the API documentation lives --> |
| <property name="dest.docs.api" value="docs/api"/> |
| |
| <!-- Where the doc results live --> |
| <property name="dest.docs" value="docs"/> |
| <property name="dest.printable_docs" value="printable_docs"/> |
| |
| <!-- Whether to force docs to be rebuilt --> |
| <property name="docs.force" value="false"/> |
| |
| <!-- Default is for Anakia to only rebuild if the target file is older than the source --> |
| <condition property="anakia.lastModifiedCheck" value="true" else="false"> |
| <!-- docs.force uses the opposite sense to the anakia check --> |
| <isfalse value="${docs.force}"/> |
| </condition> |
| <condition property="java9"> |
| <equals arg1="${ant.java.version}" arg2="9"/> |
| </condition> |
| |
| <!-- Directory where jars needed for creating documentation live --> |
| <property name="lib.doc" value="lib/doc"/> |
| |
| <!-- Directory where these 3rd party libraries live --> |
| <property name="lib.dir" value="lib"/> |
| |
| <!-- Directory where API spec libraries live --> |
| <property name="lib.api" value="lib/api"/> |
| |
| <!-- Directory where Optional 3rd party libraries live --> |
| <property name="lib.opt" value="lib/opt"/> |
| |
| <!-- Directory where Jacoco libraries live --> |
| <!-- I'm to lazy to fix this now, so I tag along with rat & checkstyle, |
| which already live there. But: none of these should appear on the classpath |
| of JMeter, neither runtime, nor compiletime. These are only required on the |
| Ant classpath, so judging from comments elsewhere, this is the wrong place. |
| --> |
| <property name="lib.coverage" location="lib/opt"/> |
| |
| <!-- Other stuff --> |
| <property name="extras.dir" value="extras"/> |
| |
| <!-- Some resources to add to jars --> |
| <property name="res.dir" value="res"/> |
| |
| <!-- Where the distribution packages will be created --> |
| <property name="dist.dir" value="dist"/> |
| |
| <!-- Where the Maven artifacts will be created --> |
| <property name="maven.dir" value="${dist.dir}/maven"/> |
| |
| <!-- Where the Maven template poms are located --> |
| <property name="maven.poms" value="res/maven"/> |
| |
| <!-- Compilation parameters --> |
| <property name="optimize" value="on"/> |
| <property name="deprecation" value="off"/> |
| <property name="target.java.version" value="1.8"/> |
| <property name="src.java.version" value="1.8"/> |
| <property name="encoding" value="UTF-8"/> |
| <!-- Set test encoding to the same default, but allow override --> |
| <property name="test.encoding" value="${encoding}"/> |
| <!-- Set javadoc encoding to the same default, but allow override --> |
| <property name="javadoc.encoding" value="${encoding}"/> |
| <property name="includeAntRuntime" value="false"/> |
| |
| <!-- 3rd party libraries to be included in the binary distribution --> |
| <property file="build.properties"/> <!-- defines the library version numbers --> |
| |
| <property name="resources.meta-inf" value="${build.res}/META-INF"/> |
| |
| <patternset id="external.jars.notices"> |
| <include name="LICENSE"/> |
| <include name="NOTICE"/> |
| <include name="README.md"/> |
| </patternset> |
| |
| <!-- Jars for binary release --> |
| <patternset id="external.jars"> |
| <include name="${lib.dir}/${accessors-smart.jar}"/> |
| <include name="${lib.dir}/${apache-bsf.jar}"/> |
| <include name="${lib.dir}/${asm.jar}"/> |
| <include name="${lib.dir}/${beanshell.jar}"/> |
| <include name="${lib.dir}/${dec.jar}"/> |
| <include name="${lib.dir}/${caffeine.jar}"/> |
| <include name="${lib.dir}/${commons-codec.jar}"/> |
| <include name="${lib.dir}/${commons-collections.jar}"/> |
| <include name="${lib.dir}/${commons-dbcp2.jar}"/> |
| <include name="${lib.dir}/${commons-io.jar}"/> |
| <include name="${lib.dir}/${commons-jexl2.jar}"/> |
| <include name="${lib.dir}/${commons-jexl3.jar}"/> |
| <include name="${lib.dir}/${commons-lang3.jar}"/> |
| <include name="${lib.dir}/${commons-math3.jar}"/> |
| <include name="${lib.dir}/${commons-net.jar}"/> |
| <include name="${lib.dir}/${commons-pool2.jar}"/> |
| <include name="${lib.dir}/${commons-text.jar}"/> |
| <include name="${lib.dir}/${darcula.jar}"/> |
| <include name="${lib.dir}/${dnsjava.jar}"/> |
| <include name="${lib.dir}/${freemarker.jar}"/> |
| <include name="${lib.dir}/${groovy-all.jar}"/> |
| <include name="${lib.dir}/${hamcrest-core.jar}"/> |
| <include name="${lib.dir}/${hamcrest-date.jar}"/> |
| <include name="${lib.dir}/${httpclient.jar}"/> |
| <include name="${lib.dir}/${httpasyncclient.jar}"/> |
| <include name="${lib.dir}/${httpcore.jar}"/> |
| <include name="${lib.dir}/${httpcore-nio.jar}"/> |
| <include name="${lib.dir}/${httpmime.jar}"/> |
| <include name="${lib.dir}/${jakarta-oro.jar}"/> |
| <include name="${lib.dir}/${jackson-annotations.jar}"/> |
| <include name="${lib.dir}/${jackson-core.jar}"/> |
| <include name="${lib.dir}/${jackson-databind.jar}"/> |
| <include name="${lib.dir}/${javamail.jar}"/> |
| <include name="${lib.dir}/${jcharts.jar}"/> |
| <include name="${lib.dir}/${jcl-over-slf4j.jar}"/> |
| <include name="${lib.dir}/${jms.jar}"/> |
| <include name="${lib.dir}/${rhino.jar}"/> |
| <include name="${lib.dir}/${javax.activation.jar}"/> |
| <include name="${lib.dir}/${javax.activation-api.jar}"/> |
| <include name="${lib.dir}/${jodd-core.jar}"/> |
| <include name="${lib.dir}/${jodd-lagarto.jar}"/> |
| <include name="${lib.dir}/${jodd-log.jar}"/> |
| <include name="${lib.dir}/${jodd-props.jar}"/> |
| <include name="${lib.dir}/${json-path.jar}"/> |
| <include name="${lib.dir}/${json-smart.jar}"/> |
| <include name="${lib.dir}/${jsoup.jar}"/> |
| <include name="${lib.dir}/${junit.jar}"/> |
| <include name="${lib.dir}/${log4j-1.2-api.jar}"/> |
| <include name="${lib.dir}/${log4j-core.jar}"/> |
| <include name="${lib.dir}/${log4j-slf4j-impl.jar}"/> |
| <include name="${lib.dir}/${mongo-java-driver.jar}"/> |
| <include name="${lib.dir}/${ph-css.jar}"/> |
| <include name="${lib.dir}/${ph-commons.jar}"/> |
| <include name="${lib.dir}/${rsyntaxtextarea.jar}"/> |
| <include name="${lib.dir}/${serializer.jar}"/> |
| <include name="${lib.dir}/${slf4j-api.jar}"/> |
| <include name="${lib.dir}/${log4j-api.jar}"/> |
| <include name="${lib.dir}/${jtidy.jar}"/> |
| <include name="${lib.dir}/${tika-core.jar}"/> |
| <include name="${lib.dir}/${tika-parsers.jar}"/> |
| <include name="${lib.dir}/${xalan.jar}"/> |
| <include name="${lib.dir}/${Saxon-HE.jar}"/> |
| <include name="${lib.dir}/${xerces.jar}"/> |
| <include name="${lib.dir}/${xml-apis.jar}"/> |
| <include name="${lib.dir}/${xmlgraphics-commons.jar}"/> |
| <include name="${lib.dir}/${xmlpull.jar}"/> |
| <include name="${lib.dir}/${xpp3.jar}"/> |
| <include name="${lib.dir}/${xstream.jar}"/> |
| </patternset> |
| |
| <!-- |
| Optional jars, not included in distribution. |
| Any such jars need to be downloaded separately. |
| These can be put into ${lib.dir} or ${lib.opt} |
| - both of these are included in the build classpath |
| |
| Any jars put into ${lib.dir} will be included in |
| the classpath used by JMeter to load classes. |
| Jars in ${lib.opt} are NOT normally included by JMeter. |
| |
| Placing an optional jar in ${lib.opt} means that it |
| will be included in the build classpath, but it will |
| not be included in the runtime classpath. This is intended |
| for testing JMeter without the optional Jar file(s). |
| --> |
| |
| <!-- Build classpath (includes the optional jar directory) --> |
| <path id="classpath"> |
| <!-- Externally produced jars --> |
| <pathelement location="${lib.dir}/${accessors-smart.jar}"/> |
| <pathelement location="${lib.dir}/${apache-bsf.jar}"/> |
| <pathelement location="${lib.dir}/${asm.jar}"/> |
| <pathelement location="${lib.dir}/${beanshell.jar}"/> |
| <pathelement location="${lib.dir}/${dec.jar}"/> |
| <pathelement location="${lib.dir}/${caffeine.jar}"/> |
| <pathelement location="${lib.dir}/${commons-codec.jar}"/> |
| <pathelement location="${lib.dir}/${commons-collections.jar}"/> |
| <pathelement location="${lib.dir}/${commons-dbcp2.jar}"/> |
| <pathelement location="${lib.dir}/${commons-io.jar}"/> |
| <pathelement location="${lib.dir}/${commons-jexl2.jar}"/> |
| <pathelement location="${lib.dir}/${commons-jexl3.jar}"/> |
| <pathelement location="${lib.dir}/${commons-lang3.jar}"/> |
| <pathelement location="${lib.dir}/${commons-math3.jar}"/> |
| <pathelement location="${lib.dir}/${commons-net.jar}"/> |
| <pathelement location="${lib.dir}/${commons-pool2.jar}"/> |
| <pathelement location="${lib.dir}/${commons-text.jar}"/> |
| <pathelement location="${lib.dir}/${darcula.jar}"/> |
| <pathelement location="${lib.dir}/${dnsjava.jar}"/> |
| <pathelement location="${lib.dir}/${freemarker.jar}"/> |
| <pathelement location="${lib.dir}/${groovy-all.jar}"/> |
| <pathelement location="${lib.dir}/${hamcrest-core.jar}"/> |
| <pathelement location="${lib.dir}/${hamcrest-date.jar}"/> |
| <pathelement location="${lib.dir}/${httpclient.jar}"/> |
| <pathelement location="${lib.dir}/${httpasyncclient.jar}"/> |
| <pathelement location="${lib.dir}/${httpcore.jar}"/> |
| <pathelement location="${lib.dir}/${httpcore-nio.jar}"/> |
| <pathelement location="${lib.dir}/${httpmime.jar}"/> |
| <pathelement location="${lib.dir}/${jakarta-oro.jar}"/> |
| <pathelement location="${lib.dir}/${jackson-annotations.jar}"/> |
| <pathelement location="${lib.dir}/${jackson-core.jar}"/> |
| <pathelement location="${lib.dir}/${jackson-databind.jar}"/> |
| <pathelement location="${lib.dir}/${javamail.jar}"/> |
| <pathelement location="${lib.dir}/${jcharts.jar}"/> |
| <pathelement location="${lib.dir}/${jms.jar}"/> |
| <pathelement location="${lib.dir}/${rhino.jar}"/> |
| <pathelement location="${lib.dir}/${javax.activation.jar}"/> |
| <pathelement location="${lib.dir}/${javax.activation-api.jar}"/> |
| <pathelement location="${lib.dir}/${jodd-core.jar}"/> |
| <pathelement location="${lib.dir}/${jodd-lagarto.jar}"/> |
| <pathelement location="${lib.dir}/${jodd-log.jar}"/> |
| <pathelement location="${lib.dir}/${jodd-props.jar}"/> |
| <pathelement location="${lib.dir}/${json-path.jar}"/> |
| <pathelement location="${lib.dir}/${json-smart.jar}"/> |
| <pathelement location="${lib.dir}/${jsoup.jar}"/> |
| <pathelement location="${lib.dir}/${junit.jar}"/> |
| <pathelement location="${lib.dir}/${log4j-1.2-api.jar}"/> |
| <pathelement location="${lib.dir}/${log4j-core.jar}"/> |
| <pathelement location="${lib.dir}/${log4j-slf4j-impl.jar}"/> |
| <pathelement location="${lib.dir}/${mongo-java-driver.jar}"/> |
| <pathelement location="${lib.dir}/${ph-css.jar}"/> |
| <pathelement location="${lib.dir}/${ph-commons.jar}"/> |
| <pathelement location="${lib.dir}/${rsyntaxtextarea.jar}"/> |
| <pathelement location="${lib.dir}/${serializer.jar}"/> |
| <pathelement location="${lib.dir}/${slf4j-api.jar}"/> |
| <pathelement location="${lib.dir}/${spock-core.jar}"/> |
| <pathelement location="${lib.dir}/${cglib-nodep.jar}"/> |
| <pathelement location="${lib.dir}/${objenesis.jar}"/> |
| <pathelement location="${lib.dir}/${jtidy.jar}"/> |
| <pathelement location="${lib.dir}/${tika-core.jar}"/> |
| <pathelement location="${lib.dir}/${tika-parsers.jar}"/> |
| <pathelement location="${lib.dir}/${xalan.jar}"/> |
| <pathelement location="${lib.dir}/${Saxon-HE.jar}"/> |
| <pathelement location="${lib.dir}/${xerces.jar}"/> |
| <pathelement location="${lib.dir}/${xml-apis.jar}"/> |
| <pathelement location="${lib.dir}/${xmlgraphics-commons.jar}"/> |
| <pathelement location="${lib.dir}/${xmlpull.jar}"/> |
| <pathelement location="${lib.dir}/${xpp3.jar}"/> |
| <pathelement location="${lib.dir}/${xstream.jar}"/> |
| <!-- Generated jars --> |
| <fileset dir="${lib.dir}" includes="jorphan.jar"/> |
| <!-- bshclient is needed to prevent occasional test failures in TestClassFinder --> |
| <fileset dir="${lib.dir}" includes="bshclient.jar"/> |
| <!-- API-only jars--> |
| <fileset dir="${lib.api}" includes="*.jar"/> |
| <!-- Optional jars --> |
| <fileset dir="${lib.opt}" includes="*.jar"/> |
| </path> |
| |
| <!-- Logging classpath --> |
| <path id="logging.classpath"> |
| <pathelement location="${lib.dir}/${jcl-over-slf4j.jar}"/> |
| <pathelement location="${lib.dir}/${log4j-api.jar}"/> |
| <pathelement location="${lib.dir}/${log4j-core.jar}"/> |
| <pathelement location="${lib.dir}/${log4j-1.2-api.jar}"/> |
| <pathelement location="${lib.dir}/${log4j-slf4j-impl.jar}"/> |
| </path> |
| |
| <!-- Anakia classpath --> |
| <path id="anakia.classpath"> |
| <pathelement location="${lib.doc}/${velocity.jar}"/> |
| <pathelement location="${lib.doc}/${jdom.jar}"/> |
| <pathelement location="${lib.dir}/${commons-collections.jar}"/> |
| <pathelement location="${lib.doc}/${commons-lang.jar}"/> |
| </path> |
| |
| <!-- Version info filter set --> |
| <tstamp> |
| <format property="year" pattern="yyyy" locale="en"/> |
| </tstamp> |
| |
| <filterset id="year.filters"> |
| <filter token="YEAR" value="${year}"/> |
| </filterset> |
| |
| |
| <target name="init-version"> |
| <tstamp/> |
| <!-- |
| JMeter version |
| This is overridden for formal releases. |
| --> |
| <property name="jmeter.version" value="5.1"/> |
| <!-- Remember to change "docversion" below if necessary --> |
| <condition property="implementation.version" |
| value="${jmeter.version} r${svn.revision}" else="${jmeter.version}.${DSTAMP}"> |
| <isset property="svn.revision"/> |
| </condition> |
| <property name="display.version" value="${implementation.version}"/> |
| <echo level="info">jmeter.version = ${jmeter.version}</echo> |
| <echo level="info">display.version = ${display.version}</echo> |
| <echo level="info">implementation.version = ${implementation.version}</echo> |
| <filterset id="version.filters"> |
| <filter token="VERSION" value="${display.version}"/> |
| </filterset> |
| </target> |
| |
| <!-- Get version from SVN status --> |
| <target name="init-svnVersion" depends="svnCheck"> |
| <fail message="Could not get SVN revision" unless="svn.revision"/> |
| <property name="jmeter.version" value="r${svn.revision}"/> |
| <!-- Copy the value to avoid duplication of revision in Manifests --> |
| <property name="implementation.version" value="${jmeter.version}"/> |
| <property name="display.version" value="${jmeter.version}"/> |
| <echo level="info">svn.revision = ${svn.revision}</echo> |
| <echo level="info">jmeter.version = ${jmeter.version}</echo> |
| <echo level="info">display.version = ${display.version}</echo> |
| <echo level="info">implementation.version = ${implementation.version}</echo> |
| </target> |
| |
| <target name="ant-version" depends="_check_ant-version"> |
| <echo level="info">ant.version = ${ant.version}</echo> |
| <echo level="info">java.version = ${ant.java.version}</echo> |
| </target> |
| |
| <target name="_check_ant-version"> |
| <antversion property="version.running" /> |
| <fail message="FATAL ERROR: The running Ant version, ${version.running}, is too old for this task."> |
| <condition> |
| <not> |
| <antversion atleast="${ant.version.required}" /> |
| </not> |
| </condition> |
| </fail> |
| </target> |
| |
| <target name="init-docs" depends="report-anakia-missing"> |
| <echo level="info">eclipse.anakia = ${eclipse.anakia}</echo> |
| </target> |
| |
| <!-- |
| - Check for anakia task |
| --> |
| <target name="check-anakia"> |
| <available classpathref="anakia.classpath" classname="org.apache.velocity.anakia.AnakiaTask" property="AnakiaTask.present"/> |
| <!-- Check for Velocity version 1.5 --> |
| <available classpathref="anakia.classpath" classname="org.apache.velocity.io.UnicodeInputStream" property="velocity.version.15"/> |
| <antcall target="report-old-velocity"></antcall> |
| </target> |
| |
| <target name="report-anakia-missing" depends="check-anakia" unless="AnakiaTask.present"> |
| <echo> |
| AnakiaTask is not present, documentation will not be generated. |
| </echo> |
| </target> |
| |
| <target name="report-old-velocity" unless="velocity.version.15" if="AnakiaTask.present"> |
| <echo> |
| Velocity version appears to be older than 1.5: the documentation may be generated with incorrect line endings. |
| </echo> |
| </target> |
| |
| <target name="compile-core" depends="compile-jorphan" description="Compile JMeter core classes."> |
| <mkdir dir="${build.core}"/> |
| <javac srcdir="${src.core}" destdir="${build.core}" optimize="${optimize}" source="${src.java.version}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${lib.dir}/${log4j-core.jar}"/> |
| <path refid="classpath"/> |
| <path refid="logging.classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.core}" dest="${build.core}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-components" depends="compile-jorphan,compile-core" description="Compile generic (protocol-independent) components."> |
| <mkdir dir="${build.components}"/> |
| <javac srcdir="${src.components}" destdir="${build.components}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <exclude name="**/visualizers/RenderInBrowser.java" unless="javafx.present"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.components}" dest="${build.components}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-functions" depends="compile-jorphan,compile-core" description="Compile functions."> |
| <mkdir dir="${build.functions}"/> |
| <javac srcdir="${src.functions}" destdir="${build.functions}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.functions}" dest="${build.functions}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-http" depends="compile-jorphan,compile-core,compile-components" description="Compile components specific to HTTP sampling."> |
| <mkdir dir="${build.http}"/> |
| <!-- Directory needs to exist, or jar will fail --> |
| <javac srcdir="${src.http}" destdir="${build.http}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <pathelement location="${build.components}"/> |
| <path refid="classpath"/> |
| <pathelement location="${lib.dir}/${jcl-over-slf4j.jar}"/> |
| <pathelement location="${lib.dir}/${log4j-api.jar}"/> |
| <pathelement location="${lib.dir}/${log4j-core.jar}"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.http}" dest="${build.http}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <!-- Tests need main classes --> |
| <target name="compile-tests" depends="compile" description="Compile test components"> |
| <mkdir dir="${build.test}"/> |
| <javac srcdir="${src.test}" destdir="${build.test}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <pathelement location="${build.components}"/> |
| <pathelement location="${build.http}"/> |
| <pathelement location="${build.ftp}"/> |
| <pathelement location="${build.functions}"/> |
| <pathelement location="${build.java}"/> |
| <pathelement location="${build.jdbc}"/> |
| <pathelement location="${build.jms}"/> |
| <pathelement location="${build.ldap}"/> |
| <pathelement location="${build.mail}"/> |
| <pathelement location="${build.mongodb}"/> |
| <pathelement location="${build.native}"/> |
| <pathelement location="${build.tcp}"/> |
| <!-- Also include compiled jars to allow running tests without rebuilding source --> |
| <fileset dir="${dest.jar}" includes="*.jar"/> |
| <path refid="classpath"/> |
| <path refid="logging.classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.test}" dest="${build.test}" includes="**/*.properties" encoding="UTF-8"/> |
| |
| <!-- Compile Spock tests (groovy) --> |
| <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc"> |
| <classpath> |
| <fileset dir="${lib.dir}" includes="*.jar"/> |
| </classpath> |
| </taskdef> |
| <groovyc srcdir="${src.test}" destdir="${build.test}" encoding="${encoding}" listfiles="true"> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <pathelement location="${build.components}"/> |
| <pathelement location="${build.http}"/> |
| <pathelement location="${build.ftp}"/> |
| <pathelement location="${build.functions}"/> |
| <pathelement location="${build.java}"/> |
| <pathelement location="${build.jdbc}"/> |
| <pathelement location="${build.ldap}"/> |
| <pathelement location="${build.mail}"/> |
| <pathelement location="${build.tcp}"/> |
| <!-- Include compiled jars to allow running tests without rebuilding source --> |
| <fileset dir="${dest.jar}" includes="*.jar"/> |
| <path refid="classpath"/> |
| </classpath> |
| <!-- Compile JUnit tests (Java) --> |
| <javac source="${src.java.version}" debug="on" target="${target.java.version}" |
| deprecation="${deprecation}" encoding="${encoding}"> |
| </javac> |
| </groovyc> |
| </target> |
| |
| <target name="compile-ftp" depends="compile-jorphan,compile-core" description="Compile components specific to FTP sampling."> |
| <mkdir dir="${build.ftp}"/> |
| <javac srcdir="${src.ftp}" destdir="${build.ftp}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.ftp}" dest="${build.ftp}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-jdbc" depends="compile-jorphan,compile-core" description="Compile components specific to JDBC sampling."> |
| <mkdir dir="${build.jdbc}"/> |
| <javac srcdir="${src.jdbc}" destdir="${build.jdbc}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.jdbc}" dest="${build.jdbc}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-ldap" depends="compile-jorphan,compile-core" |
| description="Compile components specific to LDAP sampling."> |
| <mkdir dir="${build.ldap}"/> |
| <javac srcdir="${src.ldap}" destdir="${build.ldap}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.ldap}" dest="${build.ldap}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="create-mail-dir"> |
| <mkdir dir="${build.mail}"/> |
| </target> |
| |
| <target name="compile-mail" depends="compile-jorphan,compile-core,create-mail-dir" |
| description="Compile components specific to IMAP and POP3 sampling."> |
| <javac srcdir="${src.mail}" destdir="${build.mail}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.mail}" dest="${build.mail}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-java" depends="compile-jorphan,compile-core" description="Compile components specific to Java sampling."> |
| <mkdir dir="${build.java}"/> |
| <javac srcdir="${src.java}" destdir="${build.java}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.java}" dest="${build.java}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-junit" depends="compile-jorphan,compile-core" description="Compile components specific to JUnit sampling."> |
| <mkdir dir="${build.junit}"/> |
| <javac srcdir="${src.junit}" destdir="${build.junit}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.junit}" dest="${build.junit}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-tcp" depends="compile-jorphan,compile-core" description="Compile components specific to TCP sampling."> |
| <mkdir dir="${build.tcp}"/> |
| <javac srcdir="${src.tcp}" destdir="${build.tcp}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.tcp}" dest="${build.tcp}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-protocols" depends="compile-http,compile-ftp,compile-jdbc,compile-java,compile-ldap,compile-mail,compile-tcp" description="Compile all protocol-specific components."/> |
| |
| <target name="compile-examples" depends="compile-jorphan,compile-core" description="Compile example components."> |
| <mkdir dir="${build.examples}"/> |
| <javac srcdir="${src.examples}" destdir="${build.examples}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.examples}" dest="${build.examples}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-jorphan" depends="init-version" description="Compile JOrphan utility classes."> |
| <mkdir dir="${build.jorphan}"/> |
| <javac srcdir="${src.jorphan}" destdir="${build.jorphan}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.jorphan}" dest="${build.jorphan}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-jms" depends="compile-jorphan,compile-core,compile-components" |
| description="Compile components specific to JMS sampling."> |
| <mkdir dir="${build.jms}"/> |
| <javac srcdir="${src.jms}" destdir="${build.jms}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.jms}" dest="${build.jms}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-native" depends="compile-jorphan,compile-core,compile-components" |
| description="Compile components specific to Native sampling."> |
| <mkdir dir="${build.native}"/> |
| <javac srcdir="${src.native}" destdir="${build.native}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.native}" dest="${build.native}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile-mongodb" depends="compile-jorphan,compile-core,compile-components" |
| description="Compile components specific to MongoDB sampling."> |
| <mkdir dir="${build.mongodb}"/> |
| <javac srcdir="${src.mongodb}" destdir="${build.mongodb}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}" |
| includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}"> |
| <include name="**/*.java"/> |
| <classpath> |
| <pathelement location="${build.jorphan}"/> |
| <pathelement location="${build.core}"/> |
| <path refid="classpath"/> |
| </classpath> |
| </javac> |
| |
| <!-- Convert the message files from UTF-8 to ASCII. This can be removed |
| after upgrading to Java 9+ as the minimum JRE and specifying the encoding |
| when loading the ResourceBundles --> |
| <native2ascii src="${src.mongodb}" dest="${build.mongodb}" includes="**/*.properties" encoding="UTF-8"/> |
| </target> |
| |
| <target name="compile" |
| depends="_message_3rdParty,compile-core,compile-components,compile-functions,compile-protocols,compile-junit,compile-jms,compile-native, compile-mongodb" |
| description="Compile everything."/> |
| |
| <target name="run_gui" depends="package" description="Run the JMeter GUI off the jar files"> |
| <condition property="jacoco_params" value="${jacocoagent}" else="-Djacoco_dummy="> |
| <isset property="jacocoagent"/> |
| </condition> |
| <java classname="org.apache.jmeter.NewDriver" fork="true"> |
| <classpath> |
| <pathelement location="${dest.jar.jmeter}/ApacheJMeter.jar"/> |
| </classpath> |
| <jvmarg value="-Xss256k"/> |
| <jvmarg value="-XX:MaxMetaspaceSize=256m"/> |
| <jvmarg value="${jacoco_params}run_gui:java(server)"/> |
| <sysproperty key="jmeter.home" value="${basedir}"/> |
| </java> |
| </target> |
| |
| <target name="package" depends="compile, prepare-resources, package-only" |
| description="Compile everything and create the jars"/> |
| |
| <target name="package-and-check" depends="clean, download_jars, package, checkstyle, rat" |
| description="Compile, create jars and apply checkstyle before committing code"/> |
| |
| <target name="prepare-resources" |
| description="Prepare some resources files, update date"> |
| <mkdir dir="${build.res}" /> |
| <mkdir dir="${resources.meta-inf}" /> |
| <copy todir="${resources.meta-inf}" overwrite="yes" filtering="yes" |
| encoding="${encoding}"> |
| <filterset refid="year.filters"/> |
| <filterset refid="version.filters" /> |
| <fileset dir="${res.dir}/META-INF" > |
| <include name="*.license" /> |
| <include name="*.notice" /> |
| <include name="jmeter_as_ascii_art.txt" /> |
| </fileset> |
| </copy> |
| <fixcrlf encoding="${encoding}" srcdir="${resources.meta-inf}" eol="crlf" includes="*.license *.notice"/> |
| </target> |
| |
| <!-- |
| N.B. Eclipse (and perhaps other Java IDEs) copies all files to the build directory, unless |
| told otherwise. This means that there might be copies of property and image files in the |
| build directory. To avoid including the files twice in the jar file, we include only .class |
| files in the list of files to be processed from the build tree. |
| |
| Eclipse has been fixed so that it no longer shows files in the build tree in the Open Resource dialogue, |
| so having duplicates in the build tree no longer causes confusion. |
| |
| Note: if built from Eclipse, the build directory will include resources and images, |
| and Eclipse will thus be able to run JMeter from the default path. |
| |
| If built using Ant, the build tree will not contain any resources, and thus Eclipse will not be able to |
| run JMeter unless all the JMeter jars are added. |
| |
| --> |
| <target name="package-only" description="Package already-compiled classes (shortcut for IDE users)"> |
| <manifest file="${build.dir}/MANIFEST_BIN.MF"> |
| <attribute name="Built-By" value="${user.name}"/> |
| <attribute name="Extension-Name" value=" JMeter"/> |
| <attribute name="Specification-Title" value=" Apache JMeter"/> |
| <attribute name="Specification-Vendor" value=" Apache Software Foundation"/> |
| <attribute name="Implementation-Vendor" value=" Apache Software Foundation"/> |
| <attribute name="Implementation-Vendor-Id" value=" org.apache"/> |
| <attribute name="Implementation-Version" value="${implementation.version}"/> |
| <attribute name="X-Compile-Source-JDK" value="${src.java.version}"/> |
| <attribute name="X-Compile-Target-JDK" value="${target.java.version}"/> |
| </manifest> |
| |
| <manifest file="${build.dir}/MANIFEST_SRC.MF"> |
| <attribute name="Built-By" value="${user.name}"/> |
| <attribute name="Extension-Name" value=" JMeter"/> |
| <attribute name="Specification-Title" value=" Apache JMeter"/> |
| <attribute name="Specification-Vendor" value=" Apache Software Foundation"/> |
| <attribute name="Implementation-Vendor" value=" Apache Software Foundation"/> |
| <attribute name="Implementation-Vendor-Id" value=" org.apache"/> |
| <attribute name="Implementation-Version" value="${implementation.version}"/> |
| </manifest> |
| |
| <mkdir dir="${dest.jar}"/> |
| |
| <!-- perhaps ought to include a basic jmeter.properties file in one of the jars, |
| given that JMeterUtils looks for it if it cannot find the external one |
| - otherwise, change utils to ignore it --> |
| |
| <!-- JMeter launch jar --> |
| <jar jarfile="${dest.jar.jmeter}/ApacheJMeter.jar" |
| includes="**/NewDriver*,**/DynamicClassLoader*,**/ShutdownClient.class" |
| basedir="${build.core}" |
| manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <manifest> |
| <attribute name="Main-Class" value="org.apache.jmeter.NewDriver"/> |
| </manifest> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <zipfileset file="${resources.meta-inf}/jmeter_as_ascii_art.txt" |
| fullpath="org/apache/jmeter/jmeter_as_ascii_art.txt" /> |
| </jar> |
| |
| <!-- core --> |
| <jar jarfile="${dest.jar}/ApacheJMeter_core.jar" |
| manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <!-- add license details for images --> |
| <zipfileset file="licenses/src/openiconlibrary.txt" |
| fullpath="META-INF/LICENSE-openiconlibrary.txt" /> |
| <!-- Only include class files from build tree - see above --> |
| <fileset dir="${build.core}" includes="**/*.class" |
| excludes="**/BeanShellClient*.class,**/NewDriver*,**/DynamicClassLoader*"/> |
| <fileset dir="${src.core}" includes="org/apache/jmeter/images/**" |
| excludes="**/*.properties,org/apache/jmeter/images/toolbar/icons-custom/**"/> |
| <fileset dir="${build.core}" includes="**/*.properties"> |
| <exclude name="*eucJP*"/> |
| </fileset> |
| <fileset dir="${src.core}" includes="**/*.xml" /> |
| <fileset dir="${src.core}" includes="**/*.xsl" /> |
| <fileset dir="${src.core}" includes="**/*.dtd" /> |
| <!-- This file is used by the jmeter -h option --> |
| <fileset dir="${src.core}" includes="org/apache/jmeter/help.txt"/> |
| </jar> |
| |
| <!-- components --> |
| <jar jarfile="${dest.jar}/ApacheJMeter_components.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.components}" includes="**/*.class" /> |
| <fileset dir="${build.components}" includes="**/*.properties" /> |
| </jar> |
| |
| <!-- functions --> |
| <jar jarfile="${dest.jar}/ApacheJMeter_functions.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.functions}" includes="**/*.class" /> |
| <fileset dir="${build.functions}" includes="**/*.properties" /> |
| </jar> |
| |
| <!-- http --> |
| <jar jarfile="${dest.jar}/ApacheJMeter_http.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.http}" includes="**/*.class"/> |
| <fileset dir="${build.http}" includes="**/*.properties" /> |
| </jar> |
| |
| <!-- ftp --> |
| <jar jarfile="${dest.jar}/ApacheJMeter_ftp.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.ftp}" includes="**/*.class" /> |
| <fileset dir="${build.ftp}" includes="**/*.properties" /> |
| </jar> |
| |
| <!-- jdbc --> |
| <jar jarfile="${dest.jar}/ApacheJMeter_jdbc.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.jdbc}" includes="**/*.class" /> |
| <fileset dir="${build.jdbc}" includes="**/*.properties" /> |
| </jar> |
| |
| <!-- java --> |
| <jar jarfile="${dest.jar}/ApacheJMeter_java.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.java}" includes="**/*.class" /> |
| <fileset dir="${build.java}" includes="**/*.properties" /> |
| </jar> |
| |
| <!-- BeanShell Client --> |
| <jar jarfile="${lib.dir}/bshclient.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <manifest> |
| <attribute name="Main-Class" value="org.apache.jmeter.util.BeanShellClient"/> |
| </manifest> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.core}" includes="**/BeanShellClient*.class" /> |
| </jar> |
| |
| <!-- junit --> |
| <jar jarfile="${dest.jar}/ApacheJMeter_junit.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.junit}" includes="org/**/*.class" /> |
| <fileset dir="${build.junit}" includes="**/*.properties" /> |
| </jar> |
| |
| <!-- Build junit/test.jar sample --> |
| <jar jarfile="${lib.dir}/junit/test.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.junit}" excludes="org/**/*" /> |
| <fileset dir="${src.junit}" excludes="org/**/*" /> |
| </jar> |
| |
| <!-- ldap --> |
| <jar jarfile="${dest.jar}/ApacheJMeter_ldap.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.ldap}" includes="**/*.class" /> |
| <fileset dir="${build.ldap}" includes="**/*.properties" /> |
| </jar> |
| |
| <!-- mail --> |
| <jar jarfile="${dest.jar}/ApacheJMeter_mail.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.mail}" includes="**/*.class" /> |
| <fileset dir="${build.mail}" includes="**/*.properties" /> |
| <fileset dir="${src.mail}" includes="**/*.providers" /> |
| </jar> |
| |
| <!-- tcp --> |
| <jar jarfile="${dest.jar}/ApacheJMeter_tcp.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.tcp}" includes="**/*.class" /> |
| <fileset dir="${build.tcp}" includes="**/*.properties" /> |
| </jar> |
| |
| <!-- jms --> |
| <!-- Ensure that build dir exists, even if JMS has not been built --> |
| <mkdir dir="${build.jms}"/> |
| <jar jarfile="${dest.jar}/ApacheJMeter_jms.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.jms}" includes="**/*.class" /> |
| <fileset dir="${build.jms}" includes="**/*.properties" /> |
| </jar> |
| |
| <!-- native --> |
| <!-- Ensure that build dir exists, even if Native has not been built --> |
| <mkdir dir="${build.native}"/> |
| <jar jarfile="${dest.jar}/ApacheJMeter_native.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.native}" includes="**/*.class" /> |
| <fileset dir="${build.native}" includes="**/*.properties" /> |
| </jar> |
| |
| <!-- mongodb --> |
| <!-- Ensure that build dir exists, even if MongoDB has not been built --> |
| <mkdir dir="${build.mongodb}"/> |
| <jar jarfile="${dest.jar}/ApacheJMeter_mongodb.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.mongodb}" includes="**/*.class" /> |
| <fileset dir="${build.mongodb}" includes="**/*.properties" /> |
| </jar> |
| |
| <jar jarfile="${lib.dir}/jorphan.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.jorphan}" includes="**/*.class"/> |
| <fileset dir="${build.jorphan}" includes="**/*.properties"/> |
| </jar> |
| </target> |
| |
| <!-- Check the Ant version --> |
| <available property="Ant-1.8.0-or-later" classname="org.apache.tools.ant.taskdefs.Local"/> |
| <fail message="This build requires Ant 1.8.0 or later" unless="Ant-1.8.0-or-later"/> |
| |
| <!-- Check that the 3rd party libraries are present --> |
| <target name="_check_3rdparty"> |
| <condition property="3rdparty.present"> |
| <and> |
| <!-- No need to check all jars; just check a few --> |
| <available classpathref="classpath" classname="org.apache.bsf.BSFEngine"/> |
| <available classpathref="classpath" classname="com.thoughtworks.xstream.XStream"/> |
| </and> |
| </condition> |
| </target> |
| |
| <target name="_message_3rdParty" depends="_check_3rdparty" unless="3rdparty.present"> |
| <echo>Cannot find all the required 3rd party libraries.</echo> |
| <echo>If building from a release, you can get most of them from the binary archive.</echo> |
| <echo>Use "ant download_jars" to download any missing jars.</echo> |
| <fail message="Cannot find required classes"/> |
| </target> |
| |
| <target name="setup-eclipse-project" description="Setup eclipse project to contribute to JMeter"> |
| <echo>Creating eclipse project</echo> |
| <copy overwrite="false" file="eclipse.project" tofile=".project" /> |
| <copy overwrite="false" file="eclipse.classpath" tofile=".classpath"/> |
| <input message="Next step will download dependencies for JMeter, do you agree with the download ?" addproperty="do.download" validargs="y,n"/> |
| <condition property="do.abort"> |
| <equals arg1="n" arg2="${do.download}"/> |
| </condition> |
| <fail message="You didn't agree to download dependencies, ensure you call Ant target 'download_jars when importing project" if="do.abort"/> |
| <echo>Downloading dependencies</echo> |
| <antcall target="download_jars" /> |
| <echo>Project has been successfully created, you can now import it in Eclipse using Right click > Import > Existing projects into Workspace</echo> |
| </target> |
| |
| <target name="install" depends="package,docs-printable" description="Install JMeter. (Compiles code and creates jars)"> |
| <fixcrlf encoding="${encoding}" srcdir="." eol="lf" includes="bin/*.sh bin/jmeter bin/jmeter-server bin/mirror-server"/> |
| <chmod perm="+x" dir="." includes="${dist.executables}"/> |
| </target> |
| |
| <target name="install-examples" depends="compile-examples" description="Build and installs the example components."> |
| <jar jarfile="${dest.jar}/ApacheJMeter_examples.jar" manifest="${build.dir}/MANIFEST_BIN.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <fileset dir="${build.examples}" includes="**/*.class" /> |
| <fileset dir="${build.examples}" includes="**/*.properties" /> |
| </jar> |
| </target> |
| |
| <!-- lists of files needed for a binary distribution (excluding library files) --> |
| <!-- Source files also needed at runtime --> |
| <patternset id="dist.common.native"> |
| <include name="${dest.jar.jmeter}/BeanShell*.bshrc"/> |
| <include name="${dest.jar.jmeter}/jaas.conf"/> |
| <include name="${dest.jar.jmeter}/krb5.conf"/> |
| <include name="${dest.jar.jmeter}/hc.parameters"/> |
| <include name="${dest.jar.jmeter}/jmeter.properties"/> |
| <include name="${dest.jar.jmeter}/log4j2.xml"/> |
| <include name="${dest.jar.jmeter}/reportgenerator.properties"/> |
| <include name="${dest.jar.jmeter}/upgrade.properties"/> |
| <include name="${dest.jar.jmeter}/saveservice.properties"/> |
| <include name="${dest.jar.jmeter}/users.dtd"/> |
| <include name="${dest.jar.jmeter}/users.xml"/> |
| <!-- Sample override properties files --> |
| <include name="${dest.jar.jmeter}/httpclient.parameters"/> |
| <include name="${dest.jar.jmeter}/system.properties"/> |
| <include name="${dest.jar.jmeter}/user.properties"/> |
| <!-- Exclude any files that might be present from testing the release --> |
| <exclude name="${dest.jar.jmeter}/*.log"/> |
| <exclude name="${dest.jar.jmeter}/rmi_keystore.jks"/> |
| <include name="${dest.jar.jmeter}/examples/**"/> |
| <include name="${dest.jar.jmeter}/templates/*.dtd"/> |
| <!-- report-templates files which need to have native eol --> |
| <include name="${dest.jar.jmeter}/report-template/README.TXT"/> |
| <include name="${dest.jar.jmeter}/report-template/**/*.fmkr"/> |
| <include name="${dest.jar.jmeter}/report-template/content/**/*.css"/> |
| <include name="${dest.jar.jmeter}/report-template/content/**/*.js"/> |
| <!-- JMX files are in the non-native section --> |
| <exclude name="${dest.jar.jmeter}/examples/*.jmx"/> |
| <include name="${extras.dir}/**"/> |
| <!-- Binary file types --> |
| <exclude name="${extras.dir}/*.jar"/> |
| <exclude name="${extras.dir}/*.jpg"/> |
| <exclude name="${extras.dir}/*.png"/> |
| <!-- File types that need to retain their EOL setting --> |
| <exclude name="${extras.dir}/*.jmx"/> |
| <exclude name="${extras.dir}/*.cmd"/> |
| <exclude name="${extras.dir}/*.sh"/> |
| </patternset> |
| |
| <patternset id="dist.binaries.native"> |
| <include name="LICENSE"/> |
| <include name="licenses/**"/> |
| <include name="NOTICE"/> |
| <include name="README.md"/> |
| <patternset refid="dist.common.native"/> |
| <!-- Help documentation --> |
| <include name="${dest.printable_docs}/**"/> |
| <!-- Binary file types --> |
| <exclude name="${dest.printable_docs}/**/*.pdf"/> |
| <exclude name="${dest.printable_docs}/**/*.jmx"/> |
| <!-- We also need the shared CSS for the printable docs --> |
| <include name="${dest.docs}/css/**"/> |
| </patternset> |
| |
| <!-- Source files also needed at runtime --> |
| <patternset id="dist.common.non.native"> |
| <include name="${dest.jar.jmeter}/heapdump.*"/> |
| <include name="${dest.jar.jmeter}/jmeter*"/> |
| <exclude name="${dest.jar.jmeter}/jmeter.properties"/> |
| <exclude name="${dest.jar.jmeter}/reportgenerator.properties"/> |
| <include name="${dest.jar.jmeter}/mirror-server*"/> |
| <include name="${dest.jar.jmeter}/shutdown.*"/> |
| <include name="${dest.jar.jmeter}/stoptest.*"/> |
| <include name="${dest.jar.jmeter}/create-rmi-keystore.*"/> |
| <!-- Fake SSL cert for JMeter proxy recorder in https --> |
| <include name="${dest.jar.jmeter}/proxyserver.jks"/> |
| <!-- Exclude any files that might be present from testing the release --> |
| <exclude name="${dest.jar.jmeter}/*.log"/> |
| <exclude name="${dest.jar.jmeter}/rmi_keystore.jks"/> |
| <!-- report-template files non native --> |
| <include name="${dest.jar.jmeter}/report-template/content/pages/*.png"/> |
| <include name="${dest.jar.jmeter}/report-template/sbadmin2*/**"/> |
| <include name="${dest.jar.jmeter}/templates/*.jmx"/> |
| <include name="${dest.jar.jmeter}/templates/*.xml"/> |
| <include name="${dest.jar.jmeter}/examples/*.jmx"/> |
| <include name="${extras.dir}/*.jar"/> |
| <include name="${extras.dir}/*.jpg"/> |
| <include name="${extras.dir}/*.png"/> |
| <!-- File types that need to retain their EOL setting --> |
| <include name="${extras.dir}/*.jmx"/> |
| <include name="${extras.dir}/*.cmd"/> |
| <include name="${extras.dir}/*.sh"/> |
| </patternset> |
| |
| <patternset id="dist.binaries.non.native"> |
| <patternset refid="dist.common.non.native"/> |
| <include name="${dest.jar}/"/> |
| <include name="${lib.dir}/bshclient.jar"/> |
| <include name="${lib.dir}/jorphan.jar"/> |
| <include name="${lib.dir}/junit/test.jar"/> |
| <include name="${dest.jar.jmeter}/ApacheJMeter.jar"/> |
| <!-- Help documentation, binary files --> |
| <include name="${dest.printable_docs}/**/*.pdf"/> |
| <include name="${dest.printable_docs}/**/*.jmx"/> |
| <!-- We also need the shared images for the printable docs --> |
| <include name="${dest.docs}/images/**"/> |
| </patternset> |
| |
| <!-- |
| List of Unix executable files in the binary distribution |
| These need special handling to create the correct file mode |
| --> |
| <property name="dist.executables" |
| value="${dest.jar.jmeter}/jmeter ${dest.jar.jmeter}/jmeter-server ${dest.jar.jmeter}/mirror-server ${dest.jar.jmeter}/*.sh ${extras.dir}/*.sh"/> |
| |
| <!-- List of files in source distribution that are eol=native --> |
| <!-- |
| N.B. dist.sources[.non].native sets exclude source files present in dist.binaries[.non].native |
| so that the nightly build src archive does not duplicate stuff in the binary archive |
| (This may change, as the overlap does not waste much space) |
| --> |
| <patternset id="dist.sources.native"> |
| <include name="LICENSE"/> |
| <!-- Include all the licenses; they are needed to build the distribution --> |
| <include name="licenses/**"/> |
| <include name="NOTICE"/> |
| <include name="README.md"/> |
| <include name="${src.dir}/**"/> |
| <exclude name="**/messages.metaprops"/> |
| <!-- Exclude binary types --> |
| <exclude name="**/*.gif"/> |
| <exclude name="**/*.jpg"/> |
| <exclude name="**/*.png"/> |
| <include name="${src.docs}/**"/> |
| <!-- Include some resources --> |
| <include name="${res.dir}/**"/> |
| <!-- Exclude binary types (and JMX/JTL, which are not OS-dependent) --> |
| <exclude name="${src.docs}/images/**"/> |
| <exclude name="${src.docs}/**/*.jmx"/> |
| <exclude name="${src.docs}/**/*.odt"/> |
| <exclude name="${src.docs}/**/*.pdf"/> |
| <exclude name="${src.docs}/**/*.sxi"/> |
| <exclude name="${src.docs}/**/*.sxw"/> |
| <include name="${src.test}/**"/> |
| <include name="build.xml"/> |
| <include name="build.properties"/> |
| <include name="${dest.jar.jmeter}/*.groovy"/> |
| <include name="${dest.jar.jmeter}/testfiles/**"/> |
| <exclude name="${dest.jar.jmeter}/testfiles/*.jmx"/> |
| <exclude name="${dest.jar.jmeter}/testfiles/*.jtl"/> |
| <!-- These are generated with EOL=LF --> |
| <exclude name="${dest.jar.jmeter}/testfiles/*.xml"/> |
| <!-- Ignore unit test output --> |
| <exclude name="${dest.jar.jmeter}/testfiles/*.out"/> |
| <exclude name="${dest.jar.jmeter}/testfiles/Sample_*.png"/> |
| <include name="eclipse.classpath"/> |
| <include name="eclipse.project"/> |
| <include name="eclipse.md"/> |
| <include name=".gitignore"/> |
| <include name=".travis.yml"/> |
| <include name="checkstyle.xml"/> |
| <include name="checkstyle-suppressions.xml"/> |
| <include name="rat-excludes.txt"/> |
| <include name="${build.test-res}/**"/> |
| <include name="${lib.dir}/aareadme.txt"/> |
| <include name="${lib.dir}/**/readme.txt"/> |
| <include name="fb-*.x*"/> |
| <!-- Make sure that the lib/opt directory is included in the archives --> |
| <include name="${lib.opt}/README.txt"/> |
| </patternset> |
| |
| <!-- Non-native items --> |
| <patternset id="dist.sources.non.native"> |
| <include name="${src.dir}/**/*.gif"/> |
| <include name="${src.dir}/**/*.jpg"/> |
| <include name="${src.dir}/**/*.png"/> |
| <include name="${src.docs}/images/**"/> |
| <include name="${src.docs}/**/*.jmx"/> |
| <include name="${src.docs}/**/*.odt"/> |
| <include name="${src.docs}/**/*.pdf"/> |
| <include name="${src.docs}/**/*.sxi"/> |
| <include name="${src.docs}/**/*.sxw"/> |
| <include name="${dest.jar.jmeter}/testfiles/*.jmx"/> |
| <include name="${dest.jar.jmeter}/testfiles/*.jtl"/> |
| <!-- These are generated with EOL=LF --> |
| <include name="${dest.jar.jmeter}/testfiles/*.xml"/> |
| <!-- Include the image files used in parsing / embedded download tests --> |
| <include name="${dest.jar.jmeter}/testfiles/**/*.gif"/> |
| <include name="${dest.jar.jmeter}/testfiles/**/*.jpg"/> |
| <include name="${dest.jar.jmeter}/testfiles/**/*.png"/> |
| </patternset> |
| |
| <!-- Convert eol:native source files to appropriate format if required --> |
| <target name="_filter" unless="native.${eoltype}"> |
| <property name="workdir" value="${dist.dir}/${eoltype}"/> |
| <echo level="info">Converting work files to eol=${eoltype} in ${workdir}</echo> |
| <mkdir dir="${workdir}"/> |
| <copy includeemptydirs="false" todir="${workdir}" encoding="${encoding}"> |
| <fileset dir="."> |
| <patternset refid="${fileset}"/> |
| </fileset> |
| <filterchain> |
| <fixcrlf encoding="${encoding}" fixlast="false" eol="${eoltype}" srcdir="${workdir}"/> |
| </filterchain> |
| </copy> |
| </target> |
| |
| <!-- Files to be included in full source download --> |
| <patternset id="dist_src_files_native"> |
| <patternset refid="dist.sources.native"/> |
| <patternset refid="dist.common.native"/> |
| </patternset> |
| |
| <patternset id="dist_src_files_non_native"> |
| <patternset refid="dist.sources.non.native"/> |
| <patternset refid="dist.common.non.native"/> |
| </patternset> |
| |
| <!-- Files to be included in full binary download --> |
| <patternset id="dist_bin_files_native"> |
| <patternset refid="dist.binaries.native"/> |
| <patternset refid="external.jars.notices"/> |
| <!-- We don't need the site docs, but we do want Javadoc (e.g. for BeanShell) --> |
| <include name="${dest.docs.api}/**"/> |
| <exclude name="${dest.docs.api}/resources/**"/> |
| </patternset> |
| |
| <patternset id="dist_bin_files_non_native"> |
| <patternset refid="dist.binaries.non.native"/> |
| <patternset refid="external.jars"/> |
| <include name="${dest.docs.api}/resources/**"/> |
| </patternset> |
| |
| <!-- NOTE: the site documents are not included in either archive --> |
| |
| <!-- Invoke with -Djmeter.version=m.n -Duser.name=xyz@apache.org [-Dsvn.revision=nnnnn] [-Ddisplay.version=xxxx] |
| Creates clean build and all documentation |
| Creates runtime and source distributions and site documentation |
| --> |
| <target name="distribution" |
| depends="ant-version,svnCheck,check-versions,clean,install,docs-printable,docs-api,test,_distribution" |
| description="Build JMeter for end-user distribution"/> |
| |
| <target name="check-versions" unless="disable-check-versions"> |
| <fail message="jmeter.version must be defined" unless="jmeter.version"/> |
| <fail message="svn.revision must be defined" unless="svn.revision"/> |
| <local name="version.match"/> |
| <condition property="version.match"> |
| <resourcecontains resource="${src.core}/org/apache/jmeter/util/JMeterVersion.java" |
| substring='VERSION = "${jmeter.version}";'/> |
| </condition> |
| <fail message="jmeter.version (${jmeter.version}) must be same as JMeterVersion.VERSION" unless="version.match"/> |
| </target> |
| |
| <!-- |
| <target |
| name="nightly" |
| depends="init-svnVersion,package,docs-printable,pack-nightly" |
| description="Build JMeter for nightly dir (package docs-printable pack-nightly)"/> |
| --> |
| <target |
| name="nightly-setup" |
| description="Disables some checks" |
| depends="clean,clean-docs,clean-apidocs,clean-dist"> |
| <property name="disable-check-versions" value="true" /> |
| <property name="docs.force" value="true" /> |
| </target> |
| <target |
| name="nightly" |
| depends="ant-version,nightly-setup,init-svnVersion,install,docs-printable,docs-api,test,_distribution" |
| description="Build JMeter for nightly distribution (include docs)"/> |
| |
| <target name="_eolcheck"> |
| <!-- Determine if the native format is CRLF or LF (or neither) --> |
| <condition property="native.lf"> |
| <os family="unix"/> |
| </condition> |
| <condition property="native.crlf"> |
| <os family="dos"/> |
| </condition> |
| <!-- Define native.dir.x as either the source or updated directory as appropriate --> |
| <condition property="native.dir.lf" value="." else="${dist.dir}/lf"> |
| <isset property="native.lf"/> |
| </condition> |
| <condition property="native.dir.crlf" value="." else="${dist.dir}/crlf"> |
| <isset property="native.crlf"/> |
| </condition> |
| <echoproperties prefix="native"></echoproperties> |
| </target> |
| |
| <!-- Internal target --> |
| <target name="_distribution" depends="check-versions,_eolcheck,check_jars"> |
| <property name="dist.name" value="apache-jmeter-${jmeter.version}"/> |
| <property name="pack.name" value="${dist.name}"/> |
| <echo level="info">Creating JMeter distribution ${dist.name} ${svn.revision}</echo> |
| <mkdir dir="${dist.dir}"/> |
| |
| <!-- Delete work directories just in case --> |
| <delete dir="${dist.dir}/crlf" quiet="true"/> |
| <delete dir="${dist.dir}/lf" quiet="true"/> |
| |
| <!-- Runtime archives --> |
| <antcall target="_filter"> |
| <param name="eoltype" value="lf"/> |
| <param name="fileset" value="dist_bin_files_native"/> |
| </antcall> |
| |
| <tar destfile="${dist.dir}/${pack.name}.tar" longfile="gnu"> |
| <tarfileset dir="." prefix="${dist.name}" excludes="${dist.executables}" defaultexcludes="yes"> |
| <patternset refid="dist_bin_files_non_native"/> |
| </tarfileset> |
| <tarfileset mode="755" includes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes"/> |
| <tarfileset dir="${native.dir.lf}" prefix="${dist.name}"> |
| <patternset refid="dist_bin_files_native"/> |
| </tarfileset> |
| </tar> |
| <!-- Delete work directory (may not exist) --> |
| <delete dir="${dist.dir}/lf" quiet="true"/> |
| |
| <gzip destfile="${dist.dir}/${pack.name}.tgz" src="${dist.dir}/${pack.name}.tar" /> |
| <!-- no longer needed --> |
| <delete file="${dist.dir}/${pack.name}.tar"/> |
| <antcall target="_hash"> |
| <param name="path" value="${dist.dir}/${dist.name}.tgz"/> |
| </antcall> |
| |
| <antcall target="_filter"> |
| <param name="eoltype" value="crlf"/> |
| <param name="fileset" value="dist_bin_files_native"/> |
| </antcall> |
| <zip destfile="${dist.dir}/${pack.name}.zip"> |
| <zipfileset excludes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="dist_bin_files_non_native"/> |
| </zipfileset> |
| <zipfileset filemode="755" dir="." includes="${dist.executables}" prefix="${dist.name}" defaultexcludes="yes"/> |
| <zipfileset dir="${native.dir.crlf}" prefix="${dist.name}"> |
| <patternset refid="dist_bin_files_native"/> |
| </zipfileset> |
| </zip> |
| <antcall target="_hash"> |
| <param name="path" value="${dist.dir}/${dist.name}.zip"/> |
| </antcall> |
| <!-- Delete work directory (may not exist) --> |
| <delete dir="${dist.dir}/crlf" quiet="true"/> |
| |
| <!-- Source archives --> |
| <antcall target="_filter"> |
| <param name="eoltype" value="lf"/> |
| <param name="fileset" value="dist_src_files_native"/> |
| </antcall> |
| <tar destfile="${dist.dir}/${pack.name}_src.tar" longfile="gnu"> |
| <tarfileset dir="${native.dir.lf}" prefix="${dist.name}"> |
| <patternset refid="dist_src_files_native"/> |
| </tarfileset> |
| <tarfileset excludes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="dist_src_files_non_native"/> |
| </tarfileset> |
| <tarfileset mode="755" includes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes"/> |
| </tar> |
| <!-- Delete work directory (may not exist) --> |
| <delete dir="${dist.dir}/lf" quiet="true"/> |
| |
| <gzip destfile="${dist.dir}/${pack.name}_src.tgz" src="${dist.dir}/${pack.name}_src.tar" /> |
| <!-- no longer needed --> |
| <delete file="${dist.dir}/${pack.name}_src.tar"/> |
| <antcall target="_hash"> |
| <param name="path" value="${dist.dir}/${dist.name}_src.tgz"/> |
| </antcall> |
| |
| <antcall target="_filter"> |
| <param name="eoltype" value="crlf"/> |
| <param name="fileset" value="dist_src_files_native"/> |
| </antcall> |
| |
| <zip destfile="${dist.dir}/${pack.name}_src.zip"> |
| <zipfileset dir="${native.dir.crlf}" prefix="${dist.name}"> |
| <patternset refid="dist_src_files_native"/> |
| </zipfileset> |
| <zipfileset excludes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="dist_src_files_non_native"/> |
| </zipfileset> |
| <zipfileset filemode="755" includes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes"/> |
| </zip> |
| <antcall target="_hash"> |
| <param name="path" value="${dist.dir}/${dist.name}_src.zip"/> |
| </antcall> |
| <!-- Delete work directory (may not exist) --> |
| <delete dir="${dist.dir}/crlf" quiet="true"/> |
| </target> |
| |
| <!-- Set up files for distribution to Maven via Nexus --> |
| <target name="_dist_maven" depends="init-version"> |
| <!-- Ensure there aren't any stale files left --> |
| <delete dir="${maven.dir}" includes="*.pom" quiet="true"/> |
| <echo>Updating POM files to version ${jmeter.version}</echo> |
| <copy todir="${maven.dir}"> |
| <fileset dir="${maven.poms}" includes="*.pom"/> |
| <filterset> |
| <filter token="MAVEN.DEPLOY.VERSION" value="${jmeter.version}"/> |
| </filterset> |
| </copy> |
| <delete dir="${maven.dir}" includes="*.jar" quiet="true"/> |
| <echo>Copying jar files ready for signing</echo> |
| <copy todir="${maven.dir}"> |
| <fileset dir="${dest.jar}" includes="ApacheJMeter*.jar"/> |
| <fileset dir="${dest.jar.jmeter}" includes="ApacheJMeter.jar"/> |
| <fileset dir="${lib.dir}" includes="jorphan.jar"/> |
| </copy> |
| <copy tofile="${maven.dir}/ApacheJMeter_junit-test.jar" file="${lib.dir}/junit/test.jar"/> |
| <!-- |
| Create the Maven jar needed to hold configuration data |
| Cannot be added to any of the other jars as that would cause problems for stand-alone JMeter usage. |
| --> |
| <jar jarfile="${maven.dir}/ApacheJMeter_config.jar" manifest="${build.dir}/MANIFEST_SRC.MF"> |
| <zipfileset file="${resources.meta-inf}/default.notice" |
| fullpath="META-INF/NOTICE" /> |
| <zipfileset file="${resources.meta-inf}/default.license" |
| fullpath="META-INF/LICENSE" /> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="*.bshrc"/> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="*.groovy"/> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="*.parameters"/> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="*.properties"/> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="jaas.conf"/> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="krb5.conf"/> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="log4j2.xml"/> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="proxyserver.jks"/> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="users.dtd"/> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="templates/templates.dtd"/> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="users.xml"/> |
| <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="report-template/**/*.*" /> |
| </jar> |
| <antcall target="generate_src_artifacts" /> |
| <antcall target="generate_javadoc_artifacts" /> |
| </target> |
| |
| <target name="generate_src_artifacts"> |
| <jar destfile="${maven.dir}/ApacheJMeter-sources.jar"> |
| <fileset dir="${src.core}" includes="**/NewDriver*.java,**/DynamicClassLoader*.java,**/ShutdownClient.java" |
| excludes="**/*.png,**/*.xml,**/*.properties,**/*.txt,**/.html" /> |
| </jar> |
| <jar destfile="${maven.dir}/ApacheJMeter_core-sources.jar"> |
| <fileset dir="${src.core}" excludes="**/NewDriver*.java,**/DynamicClassLoader*.java,**/ShutdownClient.java,**/*.png,**/*.xml,**/*.properties,**/*.txt,**/.html" /> |
| </jar> |
| <generate_src_artifact artifactname="ApacheJMeter_http" srcdir="${src.http}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_ftp" srcdir="${src.ftp}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_jdbc" srcdir="${src.jdbc}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_java" srcdir="${src.java}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_junit" srcdir="${src.junit}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_components" srcdir="${src.components}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_functions" srcdir="${src.functions}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="jorphan" srcdir="${src.jorphan}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_ldap" srcdir="${src.ldap}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_tcp" srcdir="${src.tcp}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_mail" srcdir="${src.mail}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_jms" srcdir="${src.jms}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_native" srcdir="${src.native}" targetdir="${maven.dir}" /> |
| <generate_src_artifact artifactname="ApacheJMeter_mongodb" srcdir="${src.mongodb}" targetdir="${maven.dir}" /> |
| </target> |
| <macrodef name="generate_src_artifact"> |
| <attribute name="artifactname"/> |
| <attribute name="srcdir" /> |
| <attribute name="targetdir"/> |
| <sequential> |
| <jar destfile="@{targetdir}/@{artifactname}-sources.jar"> |
| <fileset dir="@{srcdir}" includes="**/*.java" excludes="**/*.png,**/*.xml,**/*.properties,**/*.txt,**/.html"/> |
| </jar> |
| </sequential> |
| </macrodef> |
| |
| <target name="generate_javadoc_artifacts"> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_core" srcdir="${src.core}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_http" srcdir="${src.http}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_ftp" srcdir="${src.ftp}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_jdbc" srcdir="${src.jdbc}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_java" srcdir="${src.java}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_junit" srcdir="${src.junit}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_components" srcdir="${src.components}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_functions" srcdir="${src.functions}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="jorphan" srcdir="${src.jorphan}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_ldap" srcdir="${src.ldap}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_tcp" srcdir="${src.tcp}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_mail" srcdir="${src.mail}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_jms" srcdir="${src.jms}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_native" srcdir="${src.native}" targetdir="${maven.dir}" /> |
| <generate_javadoc_artifact artifactname="ApacheJMeter_mongodb" srcdir="${src.mongodb}" targetdir="${maven.dir}" /> |
| </target> |
| <macrodef name="generate_javadoc_artifact"> |
| <attribute name="artifactname"/> |
| <attribute name="srcdir" /> |
| <attribute name="targetdir"/> |
| <attribute name="additionalclasspath" default="${maven.dir}"/> |
| <sequential> |
| <mkdir dir="@{targetdir}/@{artifactname}" /> |
| <local name="THISYEAR" /> |
| <tstamp> |
| <!-- Used to ensure end-year is up to date --> |
| <format property="THISYEAR" pattern="yyyy"/> |
| </tstamp> |
| <javadoc |
| sourcepath="@{srcdir}" |
| additionalparam="-breakiterator -notimestamp" |
| destdir="@{targetdir}/@{artifactname}" |
| encoding="${javadoc.encoding}" |
| verbose="false" |
| protected="yes" |
| version="yes" |
| doctitle="Apache JMeter @{artifactname} API" |
| windowtitle="Apache JMeter @{artifactname} API" |
| header="<b>Apache JMeter</b>" |
| bottom="Copyright &#xA9; 1998-${THISYEAR} Apache Software Foundation. All Rights Reserved."> |
| <classpath> |
| <path refid="classpath"/> |
| <path refid="logging.classpath"/> |
| <fileset dir="@{additionalclasspath}"> |
| <include name="*.jar" /> |
| </fileset> |
| </classpath> |
| <link href="http://docs.oracle.com/javase/8/docs/api/"/> |
| </javadoc> |
| <jar destfile="@{targetdir}/@{artifactname}-javadoc.jar"> |
| <fileset dir="@{targetdir}/@{artifactname}" includes="**/*.*" /> |
| </jar> |
| <delete failonerror="true" dir="@{targetdir}/@{artifactname}" /> |
| </sequential> |
| </macrodef> |
| <!-- |
| Beanshell script to create the svnmucc scripts for upload, delete and publish. |
| |
| The generated script assumes svnmucc is invoked with a root URL of |
| https://dist.apache.org/repos/dist/ |
| This means that the jmeter files are at: |
| dev/jmeter/[binaries|source] |
| and |
| release/jmeter/[binaries|source] |
| --> |
| <scriptdef name="svnmuccScript" language="beanshell"> |
| <classpath> |
| <pathelement location="${lib.dir}/${beanshell.jar}"/> |
| </classpath> |
| <!-- type of script to create: upload, publish or delete --> |
| <attribute name="type"/> |
| <!-- Name of file to create --> |
| <attribute name="tempfile"/> |
| <![CDATA[ |
| void upload(source) { |
| self.log("Will upload " + source + " to " + RCdir); |
| outstream.println("put"); |
| outstream.println(source); // source |
| outstream.print("dev/jmeter/"); |
| outstream.print(RCdir); |
| outstream.println(source); // dest |
| outstream.println(); |
| } |
| void publish(source, targetDir) { |
| self.log("Will publish " + source + " to " + targetDir); |
| outstream.println("mv"); |
| outstream.print("dev/jmeter/"); |
| outstream.print(RCdir); |
| outstream.println(source); // source |
| outstream.print("release/jmeter/"); |
| outstream.print(targetDir); |
| outstream.println(source); // source |
| outstream.println(); |
| } |
| void delete(source, targetDir) { |
| self.log("Will delete " + source + " from " + targetDir); |
| outstream.println("rm"); |
| outstream.print("release/jmeter/"); |
| outstream.print(targetDir); |
| outstream.println(source); // source |
| outstream.println(); |
| } |
| void processFiles(basename, targetDir) { |
| // combine all the extensions in one list |
| extensions = new String[]{".zip", ".zip.asc", ".zip.sha512", ".tgz", ".tgz.asc", ".tgz.sha512"}; |
| for (i = 0; i < extensions.length; ++i) { |
| extension = extensions[i]; |
| srcFile = basename + extension; |
| |
| if ("upload".equals(type)) { |
| upload(srcFile); |
| } else if ("publish".equals(type)) { |
| publish(srcFile, targetDir); |
| } else if ("delete".equals(type)) { |
| delete(srcFile, targetDir); |
| } |
| } |
| } |
| type = attributes.get("type"); |
| RCdir = ""; |
| RC=""; |
| version = ""; |
| if (type.equals("delete")) { |
| version = project.getProperty("jmeter.old.version"); |
| } else { |
| version = project.getProperty("jmeter.version"); |
| RC = project.getProperty("RC"); |
| RCdir = "v"+version+"_"+RC+"/"; |
| } |
| tempfile = attributes.get("tempfile"); |
| self.log("Writing " + type + " script for version " + version + " " + RC + " into " + tempfile); |
| distname = project.getProperty("dist.name"); |
| outstream = new PrintStream(new File(tempfile)); |
| if ("upload".equals(type)) { // make the initial directory |
| outstream.println("mkdir"); |
| outstream.print("dev/jmeter/"); |
| outstream.println(RCdir); |
| outstream.println(); |
| } |
| processFiles(distname, "binaries/"); |
| processFiles(distname+"_src", "source/"); |
| // TODO could remove RCdir, but safer to do that manually after checking it is empty |
| outstream.close(); |
| ]]> |
| </scriptdef> |
| |
| <!-- |
| Run svnnmucc against the svnpubsub distribution area |
| --> |
| <target name="_svnmucc"> |
| <property name="repoType" value="test"/> |
| <condition property="repo" |
| value="https://dist.apache.org/repos/dist/" |
| else="https://svn.apache.org/repos/asf/jmeter/test/" > |
| <equals arg1="live" arg2="${repoType}"/> |
| </condition> |
| <echo level="info">Processing ${tempfile} using svnmucc on repo: ${repoType}</echo> |
| <echo level="info">${repo}</echo> |
| <echo level="info">${message}</echo> |
| <!-- Only one of the following will execute --> |
| <antcall target="_svnmucc_storedPass"/> |
| <antcall target="_svnmucc_providedPass"/> |
| </target> |
| |
| <!-- run svnmucc using stored credentials --> |
| <target name="_svnmucc_storedPass" unless="asf.ldap.password"> |
| <echo level="info" message="Using stored credentials"/> |
| <exec executable="svnmucc" dir="${dist.dir}" logerror="true" failonerror="true" failifexecutionfails="true"> |
| <arg value="--non-interactive"/> <!-- -n alias was removed in svnmucc 1.8.0 --> |
| <!-- not strictly necessary, but does no harm and agrees with password version --> |
| <arg value="--no-auth-cache"/> |
| <arg value="--message"/> <!-- -m --> |
| <arg value="${message}"/> |
| <arg value="--root-url"/> <!-- -U --> |
| <arg value="${repo}"/> |
| <arg value="--extra-args"/> <!-- -X --> |
| <arg value="${tempfile}"/> |
| </exec> |
| </target> |
| |
| <!-- run svnmucc using password provided as a property --> |
| <target name="_svnmucc_providedPass" if="asf.ldap.password"> |
| <!-- provide default user name --> |
| <property name="asf.ldap.username" value="${user.name}"/> |
| <echo level="info" message="Using provided credentials for user ${asf.ldap.username}"/> |
| <exec executable="svnmucc" dir="${dist.dir}" logerror="true" failonerror="true" failifexecutionfails="true"> |
| <arg value="--non-interactive"/> |
| <!-- we don't want to cache the provided credentials --> |
| <arg value="--no-auth-cache"/> |
| <arg value="--message"/> <!-- -m --> |
| <arg value="${message}"/> |
| <arg value="--root-url"/> <!-- -U --> |
| <arg value="${repo}"/> |
| <arg value="--extra-args"/> <!-- -X --> |
| <arg value="${tempfile}"/> |
| <!-- Add credentials provided on command-line --> |
| <arg value="--username"/> <!-- -u --> |
| <arg value="${asf.ldap.username}"/> |
| <arg value="--password"/> <!-- -p --> |
| <arg value="${asf.ldap.password}"/> |
| </exec> |
| </target> |
| |
| <!-- |
| Targets for deploying release candidates via svnpubsub. |
| |
| By default, deploys the artifacts under the JMeter test repo: |
| https://svn.apache.org/repos/asf/jmeter/test/ |
| |
| The live repo is: |
| https://dist.apache.org/repos/dist/ |
| |
| The JMeter files are to be found under: |
| |
| dev/jmeter/[source|binaries] |
| and |
| release/jmeter/[source|binaries] |
| |
| Files that are expected to be present: |
| apache-jmeter-<version>.[tgz|zip] + [.asc|.sha512] |
| apache-jmeter-<version>_src.[tgz|zip] + [.asc|.sha512] |
| |
| Must have SVN installed, in particular the svnmucc command-line client. |
| |
| |
| Pre-requisites: |
| The distribution files must have been built and signed and placed in the dist/ directory. |
| If any required files are missing, then upload will fail. |
| |
| Usage: |
| ant RC_upload [-DrepoType=test|live] [-Djmeter.version=2.9] -DRC=RCn [-Dasf.ldap.password=secret [-Dasf.ldap.usermame=user] ] |
| ant RC_publish [-DrepoType=test|live] [-Djmeter.version=2.9] -DRC=RCn [-Dasf.ldap.password=secret [-Dasf.ldap.usermame=user] ] |
| ant release_delete [-DrepoType=test|live] -Djmeter.old.version=2.8 [-Dasf.ldap.password=secret [-Dasf.ldap.usermame=user] ] |
| (the old version must be specified and different from the current version!) |
| |
| If the ldap password is not provided, svnmucc is invoked without the username (-u) and password (-p) parameters. |
| In this case, svnmucc will use whatever stored credentials are present for the svn host. |
| |
| If not using stored credentials, provide at least the ldap password. |
| The ldap username defaults to the login name (i.e. the Java user.name property) but can also be provided. |
| |
| Note: svnmucc can only move or copy files where the target does not exist. |
| This is perfect for deploying an RC or new release as these use unique names. |
| However, any existing files such as HEADER.html will need to be handled separately. |
| --> |
| |
| |
| <target name="RC_upload" |
| description="Upload release candidate to svnpubsub area. Params: [-DrepoType=test|live] [-Djmeter.version=m.n] -DRC=RCn [-Dasf.ldap.password=secret -Dasf.ldap.usermame=user]" |
| depends="init-version"> |
| <fail message="RC property must be defined!" unless="RC"/> |
| <echo>Version = ${jmeter.version} ${RC}</echo> |
| <property name="dist.name" value="apache-jmeter-${jmeter.version}"/> |
| <property name="tempfile" value="svnmucc_upload.tmp"/> |
| <svnmuccScript type="upload" tempfile="${dist.dir}/${tempfile}"/> |
| <antcall target="_svnmucc"> |
| <param name="message" value="Uploading release candidate ${dist.name} to dev area"/> |
| </antcall> |
| </target> |
| |
| <target name="RC_publish" |
| description="Publish release candidate from svnpubsub area. Params: [-DrepoType=test|live] [-Djmeter.version=m.n] -DRC=RCn [-Dasf.ldap.password=secret -Dasf.ldap.usermame=user]" |
| depends="init-version"> |
| <fail message="RC property must be defined!" unless="RC"/> |
| <echo>Version = ${jmeter.version} ${RC}</echo> |
| <property name="dist.name" value="apache-jmeter-${jmeter.version}"/> |
| <property name="tempfile" value="svnmucc_publish.tmp"/> |
| <svnmuccScript type="publish" tempfile="${dist.dir}/${tempfile}"/> |
| <antcall target="_svnmucc"> |
| <param name="message" value="Publishing ${dist.name} ${RC}"/> |
| </antcall> |
| </target> |
| |
| <target name="release_delete" |
| description="Delete old release candidate from svnpubsub area. : [-DrepoType=test|live] -Djmeter.old.version=m.n [-Dasf.ldap.user=name -Dasf.ldap.password=secret]" |
| depends="init-version"> |
| <fail message="jmeter.old.version property must be defined!" unless="jmeter.old.version"/> |
| <condition property="same"> |
| <equals arg1="${jmeter.old.version}" arg2="${jmeter.version}"/> |
| </condition> |
| <echo>Old Version = ${jmeter.old.version}</echo> |
| <fail message="jmeter.old.version must be different from current jmeter.version!" if="same"/> |
| <property name="dist.name" value="apache-jmeter-${jmeter.old.version}"/> |
| <property name="tempfile" value="svnmucc_delete.tmp"/> |
| <svnmuccScript type="delete" tempfile="${dist.dir}/${tempfile}"/> |
| <antcall target="_svnmucc"> |
| <param name="message" value="Deleting old release ${dist.name}"/> |
| </antcall> |
| </target> |
| |
| <!-- |
| Upload jars/poms/sigs to local (/target), snapshots or releases repos; default is local. |
| By default, deploys the artifacts to target/deploy under JMeter home. |
| |
| Must have Maven 2.2.1 or Maven 3.0.x installed. |
| The environment variable M2_HOME must point to a suitable Maven installation (2.2.1+) |
| |
| For remote deployment, username/password will need to be set up in the appropriate |
| "server" entries in the Maven settings.xml file, i.e. under: |
| |
| apache.snapshots.https |
| apache.releases.https |
| |
| Pre-requisite: |
| The jars and poms need to be made available. If this has not already been done as part of |
| creating the distribution (e.g. a snapshot release is desired), then invoke the following: |
| |
| ant _dist_maven -Djmeter.version=2.9-SNAPSHOT |
| |
| For non-SNAPSHOT releases, the jars and poms need to be signed (TODO document how!!) |
| |
| Usage: |
| ant maven_upload [-DrepoType=snapshots|releases] |
| --> |
| <target name="maven_upload" description="Upload Maven jars and poms (and sigs if present) to Nexus."> |
| |
| <property environment="env"/> |
| <!-- According to http://maven.apache.org/download.html#Installation M2_HOME applies to Maven 2.2.1 and 3.0.x --> |
| <condition property="maven.present"> |
| <or> |
| <isset property="env.M2_HOME"/> |
| <isset property="maven.home"/> <!-- Allow override on command-line --> |
| </or> |
| </condition> |
| <fail unless="${maven.present}" |
| message="The environment variable M2_HOME (or property maven.home) must point to a Maven installation"/> |
| |
| <property name="maven.home" value="${env.M2_HOME}"/> |
| |
| <!-- file repo url --> |
| <property name="file.url" value="file:${basedir}/target/deploy"/> |
| |
| <!-- Apache Nexus snapshots repo url --> |
| <property name="snapshots.url" value="https://repository.apache.org/content/repositories/snapshots"/> |
| <!-- Apache Nexus snapshots repo name for servers section of settings.xml --> |
| <property name="snapshots.repositoryId" value="apache.snapshots.https"/> |
| |
| <!-- Apache Nexus releases repo url --> |
| <property name="releases.url" value="https://repository.apache.org/service/local/staging/deploy/maven2"/> |
| <!-- Apache Nexus releases repo name for servers section of settings.xml --> |
| <property name="releases.repositoryId" value="apache.releases.https"/> |
| |
| <property name="repoType" value="file"/> |
| |
| <!-- Hack to skip defining files/types/classifiers --> |
| <condition property="XX" value="" else="XX"> |
| <and> |
| <available file="${maven.dir}/jorphan.jar.asc"/> |
| <available file="${maven.dir}/jorphan.pom.asc"/> |
| <!-- Don't upload sigs to snapshots repo (might mislead users) --> |
| <not> |
| <equals arg1="snapshots" arg2="@repoType"/> |
| </not> |
| </and> |
| </condition> |
| |
| <!-- Derived from: |
| http://maven.apache.org/ant-tasks/examples/mvn.html#Using_the_Java_Task |
| --> |
| <macrodef name="deployfile"> |
| <attribute name="stem" /> |
| <attribute name="packaging" default="jar"/> |
| <attribute name="type" default="${repoType}"/> |
| <attribute name="url" default="${@{type}.url}"/> |
| <attribute name="repositoryId" default="${@{type}.repositoryId}"/> |
| <sequential> |
| <local name="artifact_has_source"/> |
| <local name="artifact_has_javadoc"/> |
| <condition property="artifact_has_source" value="" else="XX"> |
| <and> |
| <available file="${maven.dir}/@{stem}-sources.jar"/> |
| </and> |
| </condition> |
| <condition property="artifact_has_javadoc" value="" else="XX"> |
| <and> |
| <available file="${maven.dir}/@{stem}-javadoc.jar"/> |
| </and> |
| </condition> |
| <echo>Artifact @{stem} => artifact_has_source='${artifact_has_source}', artifact_has_javadoc='${artifact_has_javadoc}'</echo> |
| <java classname="org.codehaus.classworlds.Launcher" |
| fork="true" |
| dir="${basedir}" |
| failonerror="true"> |
| <jvmarg value="-Xmx256m"/> |
| <classpath> |
| <fileset dir="${maven.home}/boot"> |
| <include name="*.jar" /> |
| </fileset> |
| <fileset dir="${maven.home}/lib"> |
| <include name="*.jar" /> |
| </fileset> |
| </classpath> |
| <sysproperty key="classworlds.conf" value="${maven.home}/bin/m2.conf" /> |
| <sysproperty key="maven.home" value="${maven.home}" /> |
| <!-- The following property must be defined for Maven 3.3.[123] at least --> |
| <sysproperty key="maven.multiModuleProjectDirectory" value="${maven.home}"/> |
| <arg value="--batch-mode"/> |
| <!--arg value="-X"/--> |
| <arg value="-DgeneratePom=false"/> |
| <arg value="-Durl=@{url}"/> |
| <arg value="-DrepositoryId=@{repositoryId}"/> |
| <arg value="-DpomFile=${maven.dir}/@{stem}.pom"/> |
| <!-- if artifact has no sources artifact_has_source=XX so -D will be ignored --> |
| <arg value="-D${artifact_has_source}sources=${maven.dir}/@{stem}-sources.jar"/> |
| <!-- if artifact has no javadoc artifact_has_javadoc=XX so -D will be ignored --> |
| <arg value="-D${artifact_has_javadoc}javadoc=${maven.dir}/@{stem}-javadoc.jar"/> |
| <arg value="-Dpackaging=@{packaging}"/> |
| <arg value="-Dfile=${maven.dir}/@{stem}.${packaging}"/> |
| <!-- |
| The XX property is a hack to avoid creating conditional code. |
| It will be empty if the sigs exist; if not it will be XX which will be ignored by Maven |
| --> |
| <!-- If packaging == pom, this will just upload the pom twice. Simpler than trying to conditionalise. --> |
| <arg value="-D${XX}files=${maven.dir}/@{stem}.${packaging}.asc,${maven.dir}/@{stem}.pom.asc,${maven.dir}/@{stem}-sources.jar.asc,${maven.dir}/@{stem}-javadoc.jar.asc"/> |
| <arg value="-D${XX}types=${packaging}.asc,pom.asc,-sources.jar.asc,-javadoc.jar.asc"/> |
| <arg value="-D${XX}classifiers=,"/> |
| <!-- |
| <arg value="-D${artifact_has_source}files=${maven.dir}/@{stem}-sources.jar.asc"/> |
| <arg value="-D${artifact_has_source}types=-sources.jar.asc"/> |
| <arg value="-D${artifact_has_source}classifiers="/> |
| <arg value="-D${artifact_has_javadoc}files=${maven.dir}/@{stem}-javadoc.jar.asc"/> |
| <arg value="-D${artifact_has_javadoc}types=-javadoc.jar.asc"/> |
| <arg value="-D${artifact_has_javadoc}classifiers="/> |
| --> |
| <!-- Need at least version 2.7 of the plugin to upload additional files--> |
| <arg value="org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy-file"/> |
| </java> |
| </sequential> |
| </macrodef> |
| |
| <deployfile stem="ApacheJMeter_parent" packaging="pom"/> |
| <deployfile stem="jorphan"/> |
| <deployfile stem="ApacheJMeter"/> |
| <deployfile stem="ApacheJMeter_components"/> |
| <deployfile stem="ApacheJMeter_config"/> |
| <deployfile stem="ApacheJMeter_core"/> |
| <deployfile stem="ApacheJMeter_ftp"/> |
| <deployfile stem="ApacheJMeter_functions"/> |
| <deployfile stem="ApacheJMeter_http"/> |
| <deployfile stem="ApacheJMeter_java"/> |
| <deployfile stem="ApacheJMeter_jdbc"/> |
| <deployfile stem="ApacheJMeter_jms"/> |
| <deployfile stem="ApacheJMeter_junit"/> |
| <deployfile stem="ApacheJMeter_junit-test"/> |
| <deployfile stem="ApacheJMeter_ldap"/> |
| <deployfile stem="ApacheJMeter_mail"/> |
| <deployfile stem="ApacheJMeter_mongodb"/> |
| <deployfile stem="ApacheJMeter_native"/> |
| <deployfile stem="ApacheJMeter_tcp"/> |
| </target> |
| |
| <!-- |
| Gump targets. |
| There are separate build and test projects for the jmeter module. |
| --> |
| <!-- Used by project jmeter-cvs --> |
| <target name="gump-build" |
| depends="_gump_properties,clean,install" |
| description="Build JMeter"> |
| <property name="dist.name" value="apache-jmeter-${jmeter.version}"/> |
| <available file="${velocity.jar}" property="velocity.present"/> |
| <!-- No need to create the archives for Gump |
| <antcall target="_pack-binaries"/> |
| <antcall target="_pack-libraries"/> |
| <antcall target="_pack-source"/> |
| --> |
| </target> |
| |
| <!-- Used by project jmeter-test --> |
| <target name="gump-test" |
| depends="_gump_properties,compile-tests,_test" |
| description="Test JMeter in Gump"> |
| <!-- Show the log file |
| <concat> |
| <filelist dir="bin" files="jmeter-test.log" /> |
| </concat> |
| --> |
| </target> |
| |
| <target name="_gump_properties"> |
| <echo level="info"> |
| Gump properties for this run |
| jmeter.version = ${jmeter.version} |
| gump.run = ${gump.run} |
| date.projectfile = ${date.projectfile} |
| version.projectfile = ${version.projectfile} |
| Build file: |
| version.build = ${version.build} |
| Java properties: |
| target.java.version = ${target.java.version} |
| src.java.version = ${src.java.version} |
| optimize = ${optimize} |
| deprecation = ${deprecation} |
| encoding = ${encoding} |
| </echo> |
| <echoproperties prefix="ant"/> |
| <echoproperties prefix="gump"/> |
| <echoproperties prefix="os"/> |
| <echoproperties prefix="java."/> |
| <echoproperties prefix="user."/> |
| |
| </target> |
| |
| <target name="pack-src" depends="init-version"> |
| <property name="dist.name" value="apache-jmeter-${jmeter.version}"/> |
| <antcall target="_pack-source"/> |
| </target> |
| |
| <target name="pack-dist" depends="init-version"> |
| <property name="dist.name" value="apache-jmeter-${jmeter.version}"/> |
| <antcall target="_pack-binaries"/> |
| <antcall target="_pack-libraries"/> |
| <antcall target="_pack-javadoc"/> |
| <antcall target="_pack-source"/> |
| </target> |
| |
| <!-- As pack-dist but without javadoc --> |
| <target name="pack-nightly" depends="init-version"> |
| <property name="dist.name" value="apache-jmeter-${jmeter.version}"/> |
| <antcall target="_pack-binaries"/> |
| <antcall target="_pack-libraries"/> |
| <antcall target="_pack-source"/> |
| </target> |
| |
| <target name="_pack-binaries"> |
| <property name="pack.name" value="${dist.name}_bin"/> |
| <mkdir dir="${dist.dir}"/> |
| <tar destfile="${dist.dir}/${pack.name}.tar" longfile="gnu"> |
| <tarfileset dir="." prefix="${dist.name}" excludes="${dist.executables}" defaultexcludes="yes"> |
| <patternset refid="dist.binaries.native"/> |
| </tarfileset> |
| <tarfileset dir="." prefix="${dist.name}" excludes="${dist.executables}" defaultexcludes="yes"> |
| <patternset refid="dist.binaries.non.native"/> |
| </tarfileset> |
| <tarfileset mode="755" includes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes"/> |
| </tar> |
| <gzip destfile="${dist.dir}/${pack.name}.tgz" src="${dist.dir}/${pack.name}.tar" /> |
| <!-- no longer needed --> |
| <delete file="${dist.dir}/${pack.name}.tar"/> |
| <zip destfile="${dist.dir}/${pack.name}.zip"> |
| <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="dist.binaries.native"/> |
| </zipfileset> |
| <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="dist.binaries.non.native"/> |
| </zipfileset> |
| </zip> |
| </target> |
| |
| <target name="_pack-libraries"> |
| <property name="pack.name" value="${dist.name}_lib"/> |
| <mkdir dir="${dist.dir}"/> |
| <tar destfile="${dist.dir}/${pack.name}.tar" longfile="gnu"> |
| <tarfileset dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="external.jars.notices"/> |
| </tarfileset> |
| <tarfileset dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="external.jars"/> |
| </tarfileset> |
| </tar> |
| <gzip destfile="${dist.dir}/${pack.name}.tgz" src="${dist.dir}/${pack.name}.tar" /> |
| <!-- no longer needed --> |
| <delete file="${dist.dir}/${pack.name}.tar"/> |
| <zip destfile="${dist.dir}/${pack.name}.zip"> |
| <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="external.jars.notices"/> |
| </zipfileset> |
| <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="external.jars"/> |
| </zipfileset> |
| </zip> |
| </target> |
| |
| <target name="_pack-javadoc"> |
| <property name="pack.name" value="${dist.name}_api"/> |
| <mkdir dir="${dist.dir}"/> |
| <tar destfile="${dist.dir}/${pack.name}.tar" longfile="gnu"> |
| <tarfileset includes="${dest.docs.api}" dir="." prefix="${dist.name}" defaultexcludes="yes"/> |
| </tar> |
| <gzip destfile="${dist.dir}/${pack.name}.tgz" src="${dist.dir}/${pack.name}.tar" /> |
| <!-- no longer needed --> |
| <delete file="${dist.dir}/${pack.name}.tar"/> |
| <zip destfile="${dist.dir}/${pack.name}.zip"> |
| <zipfileset includes="${dest.docs.api}" dir="." prefix="${dist.name}" defaultexcludes="yes"/> |
| </zip> |
| </target> |
| |
| <target name="_pack-source"> |
| <property name="pack.name" value="${dist.name}_src"/> |
| <mkdir dir="${dist.dir}"/> |
| <tar destfile="${dist.dir}/${pack.name}.tar" longfile="gnu"> |
| <tarfileset dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="dist.sources.native"/> |
| </tarfileset> |
| <tarfileset dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="dist.sources.non.native"/> |
| </tarfileset> |
| </tar> |
| <gzip destfile="${dist.dir}/${pack.name}.tgz" src="${dist.dir}/${pack.name}.tar" /> |
| <!-- no longer needed --> |
| <delete file="${dist.dir}/${pack.name}.tar"/> |
| <zip destfile="${dist.dir}/${pack.name}.zip"> |
| <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="dist.sources.native"/> |
| </zipfileset> |
| <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes"> |
| <patternset refid="dist.sources.non.native"/> |
| </zipfileset> |
| </zip> |
| </target> |
| |
| <!-- Create a zip of all resource files for translators --> |
| <target name="pack-resources"> |
| <mkdir dir="${dist.dir}"/> |
| <zip destfile="${dist.dir}/resources.zip"> |
| <zipfileset dir="." defaultexcludes="yes"> |
| <patternset excludes="${src.dir}/examples/**" /> |
| <patternset includes="${src.dir}/**/*Resources.properties" /> |
| <patternset includes="${src.dir}/**/messages.properties" /> |
| <patternset includes="${src.dir}/**/i18nedit.properties" /> |
| </zipfileset> |
| </zip> |
| </target> |
| |
| <!-- |
| Utility target to create SHA-512 checksums in standard format (with *filename) |
| Usage: |
| <antcall target="_hash"> |
| <param name="path" value="archive.jar|zip|gz"/> |
| </antcall> |
| --> |
| |
| <target name="_hash" unless="hash.skip"> |
| <basename property="_base" file="${path}"/> |
| <echo message="Creating SHA-512 for ${path}"/> |
| <checksum algorithm="SHA-512" file="${path}" property="sha512"/> |
| <echo message="${sha512} *${_base}" file="${path}.sha512"/> |
| </target> |
| |
| <!-- |
| Clean-docs and clean-apidocs can be used to empty the docs or docs/api directories. |
| This should be done before regenerating the documents for a release so that any obsolete files are detected. |
| --> |
| <target name="clean-docs"> |
| <delete> |
| <fileset dir="${dest.docs}" excludes=".svn/** api/**"/> |
| </delete> |
| </target> |
| |
| <!-- Use this before running docs-print to ensure image files are synchronised --> |
| <target name="clean-docs-images"> |
| <delete failonerror="false"> |
| <fileset dir="${dest.docs}/images" excludes=".svn/**"/> |
| </delete> |
| </target> |
| |
| <target name="clean-apidocs"> |
| <delete failonerror="false"> |
| <fileset dir="${dest.docs.api}" excludes=".svn/**" /> |
| </delete> |
| </target> |
| |
| <target name="clean" description="Clean up to force a build from source."> |
| <!-- Unfortunately Ant reports failure if a directory does not exist --> |
| <delete quiet="false" failonerror="false"> |
| <fileset dir="${dest.jar.jmeter}" includes="ApacheJMeter.jar"/> |
| <fileset dir="${lib.dir}" includes="jorphan.jar"/> |
| <fileset dir="${lib.dir}" includes="bshclient.jar"/> |
| <fileset dir="${dest.jar}" includes="*.jar"/> |
| <fileset dir="${build.dir}"/> |
| <fileset dir="${dest.printable_docs}"/> |
| <fileset dir="${dist.dir}"/> |
| </delete> |
| </target> |
| |
| <target name="clean-dist" description="Clean up dist directory."> |
| <delete quiet="true"> |
| <fileset dir="${dist.dir}"/> |
| </delete> |
| </target> |
| |
| <target name="docs-api" description="Generate the API documentation."> |
| <available property="jdk1.8+" classname="java.util.function.Consumer"/> |
| <fail unless="jdk1.8+" |
| message="Must use Java 8 or later for creating the Javadocs"/> |
| <tstamp> |
| <!-- Used to ensure end-year is up to date --> |
| <format property="THISYEAR" pattern="yyyy"/> |
| </tstamp> |
| |
| <!-- JMeter Javadoc version (own variable is used so can be overridden independently) --> |
| <property name="docversion" value="${jmeter.version}"/> |
| |
| <mkdir dir="${dest.docs.api}"/> |
| <delete quiet="true"> |
| <fileset dir="${dest.docs.api}" includes="**/*.html"/> |
| </delete> |
| <echo level="info">Updating overview to ${docversion}</echo> |
| <replaceregexp match="version [^\s]+" |
| encoding="${encoding}" |
| replace="version ${docversion}" |
| flags="g" byline="true"> |
| <fileset dir="${src.docs}" includes="overview.html" /> |
| </replaceregexp> |
| <javadoc |
| sourcepathref="srcpaths" |
| overview="${src.docs}/overview.html" |
| additionalparam="-breakiterator -notimestamp" |
| destdir="${dest.docs.api}" |
| encoding="${javadoc.encoding}" |
| verbose="false" |
| protected="yes" |
| version="yes" |
| doctitle="Apache JMeter API" |
| windowtitle="Apache JMeter API" |
| header="<b>Apache JMeter</b>" |
| bottom="Copyright &#xA9; 1998-${THISYEAR} Apache Software Foundation. All Rights Reserved." |
| packagenames="org.apache.jmeter.*,org.apache.jorphan.*"> |
| <classpath> |
| <path refid="classpath"/> |
| <path refid="logging.classpath"/> |
| </classpath> |
| <link href="http://docs.oracle.com/javase/8/docs/api/"/> |
| </javadoc> |
| <!-- No need for Javadoc patch (CVE-2013-1571) now we are using Java 8 minimum --> |
| </target> |
| |
| <!-- |
| Run Doccheck: See http://java.sun.com/j2se/javadoc/doccheck/docs/DocCheck.html |
| and http://java.sun.com/j2se/javadoc/doccheck/ |
| Download the doclet, and put the jar in lib/opt. |
| Output is in reports/ directory |
| --> |
| <target name="docs-check"> |
| <javadoc sourcepathref="srcpaths" |
| destdir="reports" |
| docletpath="${lib.opt}/doccheck.jar" |
| packagenames="org.apache.jmeter.*,org.apache.jorphan.*" |
| excludepackagenames="org.apache.jmeter.util.keystore"> |
| <classpath refid="classpath"/> |
| <doclet name="com.sun.tools.doclets.doccheck.DocCheck"> |
| <!-- |
| -execDepth: 1=org.* 2=org.apache.* 3+=org.apache.jmeter.* |
| -evident does not seem to work |
| --> |
| <param name="-execDepth" value="3"/> |
| <param name="-evident" value="4"/> |
| </doclet> |
| </javadoc> |
| </target> |
| |
| <target name="docs-site" depends="init-docs" description="Generate browsable HTML documentation in web-site format."> |
| <mkdir dir="${dest.docs}" /> |
| <!-- The extending pages are rather out of date (and not linked from elsewhere) --> |
| <xslt style="xdocs/stylesheets/website-style.xsl" basedir="${src.docs}" destdir="${dest.docs}" |
| force="${docs.force}" excludes="extending.xml" includes="*.xml"> |
| <param name="relative-path" expression="." /> |
| <param name="subdir" expression="" /> |
| <param name="year" expression="${year}" /> |
| </xslt> |
| <xslt style="xdocs/stylesheets/website-style.xsl" basedir="${src.docs}/usermanual" destdir="${dest.docs}/usermanual" |
| force="${docs.force}" includes="*.xml"> |
| <param name="relative-path" expression=".." /> |
| <param name="subdir" expression="usermanual" /> |
| <param name="year" expression="${year}" /> |
| </xslt> |
| <xslt style="xdocs/stylesheets/website-style.xsl" basedir="${src.docs}/localising" destdir="${dest.docs}/localising" |
| force="${docs.force}" includes="*.xml"> |
| <param name="relative-path" expression=".." /> |
| <param name="subdir" expression="usermanual" /> |
| <param name="year" expression="${year}" /> |
| </xslt> |
| <copy todir="${dest.docs}/images" overwrite="${docs.force}"> |
| <fileset dir="${src.images}" /> |
| </copy> |
| <copy todir="${dest.docs}/css" overwrite="${docs.force}"> |
| <fileset dir="${src.css}"/> |
| </copy> |
| <!-- |
| Note: it's vital that the Javadoc files are excluded from any fixes applied here. |
| Any fixes to Javadoc files need to be done in the docs-api target only. |
| Otherwise the output from the build will depend on which is done first. |
| --> |
| <echo level="info">Fixing EOL</echo> |
| <fixcrlf encoding="utf-8" srcdir="${dest.docs}/" includes="**/*.html" excludes="api/**" fixlast="false"/> |
| <echo level="info">Removing unnecessary </br> tags</echo> |
| <replace encoding="utf-8" dir="${dest.docs}/" includes="**/*.html" excludes="api/**" token="</br>" value=""/> |
| <copy todir="${dest.docs}/demos"> |
| <fileset dir="${src.demos}"/> |
| </copy> |
| <copy todir="${dest.docs}/usermanual"> |
| <fileset file="${src.docs}/usermanual/*.pdf"/> |
| </copy> |
| <copy todir="${dest.docs}/extending"> |
| <fileset file="${src.docs}/extending/jmeter_tutorial.pdf"/> |
| </copy> |
| <copy todir="${dest.docs}/"> |
| <fileset file="${src.docs}/download_jmeter.cgi"/> |
| </copy> |
| </target> |
| |
| <target name="docs-printable" depends="init-docs" if="AnakiaTask.present" description="Generate printable HTML documentation."> |
| <taskdef name="anakia" classpathref="anakia.classpath" classname="org.apache.velocity.anakia.AnakiaTask"/> |
| <!-- The extending pages are rather out of date (and not linked from elsewhere) --> |
| <anakia basedir="${src.docs}" destdir="${dest.printable_docs}/" extension=".html" style="${eclipse.anakia}/xdocs/stylesheets/site_printable.vsl" projectFile="./stylesheets/printable_project.xml" |
| excludes="**/stylesheets/** extending.xml extending/*.xml" |
| includes="**/*.xml" lastModifiedCheck="${anakia.lastModifiedCheck}" velocityPropertiesFile="${src.docs}/velocity.properties"/> |
| <echo level="info">Fixing EOL</echo> |
| <fixcrlf encoding="utf-8" srcdir="${dest.printable_docs}/" includes="**/*.html" fixlast="false"/> |
| <echo level="info">Removing unnecessary </br> tags</echo> |
| <replace encoding="utf-8" dir="${dest.printable_docs}/" includes="**/*.html" token="</br>" value=""/> |
| <!-- |
| Share images with non-printable version |
| Means printable version won't work on web-site |
| --> |
| <echo level="info">Copying files</echo> |
| <copy todir="${dest.docs}/css"> |
| <fileset dir="${src.css}"/> |
| </copy> |
| <copy todir="${dest.docs}/images"> |
| <fileset dir="${src.images}" /> |
| </copy> |
| <copy todir="${dest.printable_docs}/demos"> |
| <fileset dir="${src.demos}"/> |
| </copy> |
| <copy todir="${dest.printable_docs}/usermanual"> |
| <fileset file="${src.docs}/usermanual/*.pdf"/> |
| </copy> |
| <copy todir="${dest.printable_docs}/extending"> |
| <fileset file="${src.docs}/extending/jmeter_tutorial.pdf"/> |
| </copy> |
| </target> |
| |
| <target name="test" depends="_test,_allbatchtests" |
| description="Run tests (use -Djava.awt.headless=true on systems without graphic displays)"/> |
| |
| <target name="test-both" depends="test-headless,test-headed"/> |
| |
| <target name="test-headless" depends="compile-tests"> |
| <antcall target="_test"> |
| <param name="test.headless" value="true"/> |
| </antcall> |
| </target> |
| |
| <target name="test-headed" depends="compile-tests"> |
| <antcall target="_test"> |
| <param name="test.headless" value="false"/> |
| </antcall> |
| </target> |
| |
| <target name="batchtestserver" description="Run the batch test using client-server mode"> |
| <property name="batchtestserver.out" location="${basedir}/bin"/> |
| <property name="batchtestserver.log" value="BatchTestServer.log"/> |
| <!-- rmi_force_localhost is used by the Travis build --> |
| <condition property="rmi_hostname_option" value="-Ddummy=true"> |
| <not><isset property="rmi_force_localhost"/></not> |
| </condition> |
| <condition property="rmi_hostname_option" value="-Djava.rmi.server.hostname=${computer.hostname}"> |
| <isset property="rmi_force_localhost"/> |
| </condition> |
|