Pass command-line argument javaagent with maven exec plugin

java, javaagents, sizeof

Solution

On a Linux/Unix machine the "mvn" command will use a shell variable "MAVEN_OPTS" to pass in options. This is useful if you want to give Maven more memory. In your .profile or .bash_profile put a line like this in:

export MAVEN_OPTS=-javaagent

On windows:

in shell (cmd.exe) type "set MAVEN_OPTS=..."

or

add MAVEN_OPTS to your environment

On NetBeans:

In ~/.netbeans/6.5/, create etc/netbeans.conf. Add your environment variables there, e.g.:

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=128m"

Problem

I have a caching app in Java and I need to put objects of different size in cache. The problem is that I didn't really know how to count the size of a custom object and I've found the solution - to use the library: http://mvnrepository.com/artifact/com.googlecode.sizeofag/sizeofag/1.0.0. To run the program using the library I need to specify command-line argument -javaagent. So, how can I do it if I'm using maven??? The program is simple: ``` protected static Boolean b; public static void main( String[] args ) { System.out.println(SizeOfAgent.sizeOf(b)); } ``` This is the output: ``` 0 Can not access instrumentation environment. Please check if jar file containing SizeOfAgent class is specified in the java's "-javaagent" command line argument. ``` P.S. I know, that such kind of question already exists, but it has no proper answer.

Original source