Si dovrebbe essere in grado di farlo con lo Maven Exec Plugin. Per il mio progetto, ho optato per creare un profilo di riferimento che possa essere eseguito con il comando maven mvn compile -P benchmarks
.
Per configurare qualcosa di simile, è possibile aggiungere qualcosa sulla falsariga di quanto segue al pom.xml
, specificando la portata del percorso di classe come prova usando il tag <classpathScope>
:
<profiles>
<profile>
<id>benchmarks</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>caliper</id>
<phase>compile</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<classpathScope>test</classpathScope>
<mainClass>com.google.caliper.runner.CaliperMain</mainClass>
<commandlineArgs>com.stackoverflow.BencharkClass,com.stackoverflow.AnotherBenchmark</commandlineArgs>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
In alternativa, se si' d come per specificare un sacco di opzioni per la pinza, è probabilmente più facile da utilizzare i tag <arguments>
:
<executions>
<execution>
<id>caliper</id>
<phase>compile</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<classpathScope>test</classpathScope>
<mainClass>com.google.caliper.runner.CaliperMain</mainClass>
<arguments>
<argument>com.stackoverflow.BencharkClass</argument>
<argument>--instrument</argument>
<argument>runtime</argument>
<argument>-Cinstrument.allocation.options.trackAllocations=false</argument>
</arguments>
</configuration>
</execution>
</executions>
più opzioni di configurazione (Li ke -Cinstrument.allocation.options.trackAllocations
sopra) può essere trovato here e più opzioni di runtime (come --instrument
sopra) possono essere trovate here.
Quindi, se si utilizza il plugin Eclipse m2 Maven, è possibile fare clic destro sulla cartella del progetto e selezionare Run as... -> Maven Build...
e inserire qualcosa di simile clean install
nella casella di Goals
input e benchmarks
nella casella di Profiles
input e cliccare Run
e si dovrebbe vedere l'output nella tua console Eclipse.
È importante notare che ho utilizzato una build di snapshot locale di Caliper verificando l'origine utilizzando , che è consigliata al momento di questo post per sfruttare l'ultima API.
La configurazione di esecuzione di Eclipse elenca solo "Dipendenze Maven" per il mio classpath. Non sembra separare le dipendenze tra test e non test. Hai verificato che Caliper sia effettivamente incluso? – gk5885
@ gk5885, è disponibile in Esplora pacchetti, disponibile nel percorso classe quando si esegue una configurazione di tipo 'JUnit' ma non disponibile sul percorso classe quando si esegue una configurazione di tipo 'Applicazione Java'. –
Non sono sicuro di comprendere appieno il tuo scenario, in particolare "esegui una classe arbitraria con dipendenze di test nel classpath". Non puoi semplicemente creare ed eseguire un test JUnit che farebbe esattamente ciò che CaliperMain normalmente farebbe nel suo metodo principale? – Morfic