Application | Configuration location | Details |
---|---|---|
Maven | <user directory>/.m2/settings.xml | Change where local repository is stored, e.g. <localRepository>C:\_LOCALdata\m2\repository</localRepository> |
Jetty | You can change where WAR files are extracted to, e.g. by simply creating a directory named "work" in your Jetty distribution | |
Nexus | <Nexus web app directory>/webapp/WEB-INF/plexus.properties | Edit file and change the property "nexus-work" |
Hudson | <Jetty directory>/etc/jetty.xml | According to Administering Hudson, you can add a HUDSON_HOME environment variable and re-start Jetty, but this didn't work for me. However the second option did work, add e.g.: <Call class="java.lang.System" name="setProperty"> <Arg>HUDSON_HOME</Arg> <Arg>C:/_LOCALdata/SERVICES/hudson-home</Arg> </Call> |
Labels
.net
(1)
*nix
(1)
administration
(1)
Android
(2)
Axis2
(2)
best practice
(5)
big-data
(1)
business-analysis
(1)
code re-use
(1)
continuous-integration
(1)
Cordova-PhoneGap
(1)
database
(2)
defect
(1)
design
(3)
Eclipse
(7)
education
(1)
groovy
(2)
https
(2)
Hudson
(4)
Java
(1)
JAX-RS
(2)
Jersey
(3)
Jetty
(1)
localization
(1)
m2eclipse
(2)
MapForce
(1)
Maven
(12)
MySQL
(1)
Nexus
(4)
notes
(4)
OO
(1)
Oracle
(4)
performance
(1)
Perl
(1)
PL/SQL
(1)
podcast
(1)
PostgreSQL
(1)
requirement
(1)
scripting
(1)
serialization
(1)
shell
(1)
SoapUI
(1)
SQL
(1)
SSH
(2)
stored procedure
(1)
STS
(2)
Subclipse
(1)
Subversion
(3)
TOAD
(3)
Tomcat
(4)
UML
(2)
unit-testing
(2)
WAMP
(1)
WAS
(3)
Windows
(3)
WP8
(2)
WTP
(2)
XML
(4)
XSLT
(1)
Monday, February 6, 2012
Changing default directory
Thursday, January 12, 2012
Maven build lifecycle
How long can you use Maven without understanding the Maven build lifecycle? Notes from Introduction to the Build Lifecycle for someone who has already used Maven for awhile:
- Three built-in lifecycles: default, clean and site
- Different build phases for each lifecycle
- A goal represents a specific task, may be bound to zero or more build phases. A goal not bound to any build phase could be executed outside of the build lifecycle by direct invocation
- goal = Ant task (roughly) = an action during the build
- There is both a clean lifecycle and a clean phase
- If a build phase has no goals bound to it, that build phase will not execute
- Each packaging (e.g. jar, war, etc.) contains a list of goals to bind to a particular phase
- Plugins can provide/offer multiple goals for execution
- If more than one goal is bound to a particular phase, the order used is that those from the packaging are executed first, followed by those configured in the POM
Sunday, January 8, 2012
Can't add web project to Tomcat in STS
Trying to add a web project to a Tomcat instance. The project has the Dynamic Web Module project facet enabled (Properties > Project Facets). Still get this message:
Reason:
Grails project facet is not supported. Need to use tc Server within STS.
Monday, December 26, 2011
Problems installing Groovy-Eclipse extension in SpringSource Tool Suite 2.7.1
Attempting to install the Groovy-Eclipse extension in STS 2.7.1, I received obscure error messages about a conflicting dependency with a Maven extension. Using a new workspace did not fix the problem. When trying with STS 2.8.1, I received a much better error message: that I could not install since STS was in the C:\Program Files directory. To verify this, I moved my STS program directory to the root of C: and tried to install the Groovy-Eclipse extension again: No problems this time.
Comparing against some of my other computers with STS and the Groovy-Eclipse extension installed, it appears that the Groovy-Eclipse extension does not like the space character in C:\Program Files.
Comparing against some of my other computers with STS and the Groovy-Eclipse extension installed, it appears that the Groovy-Eclipse extension does not like the space character in C:\Program Files.
Thursday, December 1, 2011
Third-party JARs and Nexus
The Nexus documentation (start here and Uploading Artifacts) is quite good for what to do to deal with third-party JARs and basically JARs that don't reside in any repository out in the rest of the world (obsolete versions or proprietary). However, if you aren't careful, the Nexus user interface can be misleading. For the Artifact Upload interface, it can be easy to select the POM file and select the JAR artifact, but neglect to press the Add Artifact button.
Nexus will then simply upload the POM file but not the JAR file. At this point, the clean-up of the mess begins.
Your Maven build will fail, not being able to locate the JAR file. If you attempt to re-do the step, but this time, pressing the Add Artifact button, you will get the following error:
You need to clean up the repository of the Nexus server, which you can do by going to the Browse Storage tab > navigating to the appropriate section by GAV > right-click > Delete.
However, if you attempt another build, Maven will fail again. If you look at the build log, you will see something like:
The next step is to go to the Local repository where the Maven build ran and clean it up. Navigate in the file system by GAV and you will find files named similarly to:
Delete these, re-run the Maven build. It should find your artifacts now.
Nexus will then simply upload the POM file but not the JAR file. At this point, the clean-up of the mess begins.
Your Maven build will fail, not being able to locate the JAR file. If you attempt to re-do the step, but this time, pressing the Add Artifact button, you will get the following error:
You need to clean up the repository of the Nexus server, which you can do by going to the Browse Storage tab > navigating to the appropriate section by GAV > right-click > Delete.
However, if you attempt another build, Maven will fail again. If you look at the build log, you will see something like:
Failure to find ... in http://.../nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced
The next step is to go to the Local repository where the Maven build ran and clean it up. Navigate in the file system by GAV and you will find files named similarly to:
some-artifact-0.1.jar.lastUpdated
some-artifact-0.1.pom.lastUpdated
Delete these, re-run the Maven build. It should find your artifacts now.
Wednesday, November 30, 2011
Getting Groovy test cases to run with Maven
Groovy is excellent for writing test cases because of its brevity and meta-programming capabilities. For example, a class that I was using to do integration testing called System.exit in its main method. With Groovy I could re-define its main method so that I could continue running the rest of my test code:
Launcher.metaClass.'static'.main = { String[] args ->
delegate.programArguments = args
delegate.init()
delegate.run()
// No more System.exit!
}
However, to get Groovy test cases to run inside Maven (and outside of Eclipse) requires some tweaks. First of all, you have to make Maven aware that there are Groovy test cases to execute, or else it won't even find them The section "Configuring Maven2 to compile and run your Groovy tests" in the article Writing unit tests using Groovy is mostly correct but it is out-of-date. If you use its Maven coordinates verbatim, you will have errors in your Maven output.
Error: Execution default of goal org.codehaus.mojo.groovy:groovy-maven-plugin:1.0-beta-3:testCompile failed: An API incompatibility was encountered while executing org.codehaus.mojo.groovy:groovy-maven-plugin:1.0-beta-3:testCompile: java.lang.NoSuchMethodError: org.codehaus.plexus.PlexusContainer.hasChildContainer(Ljava/lang/String;)Z
This can be corrected by changing the coordinates of the Groovy Maven plugin to:
<groupId>org.codehaus.mojo</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>1.3</version>
Error: Failed to execute goal org.codehaus.mojo:groovy-maven-plugin:1.3:testCompile ... Unknown type: METHOD_DEF
This can be caused by anonymous inner classes in the code. Groovy for Java Programmers gives some suggestions for how to re-format your code so that Groovy can properly parse it and recognize an anonymous inner class definition, however these suggestions didn't work for me. Anonymous inner class are a convenience so one can re-write the code to eliminate them.
Error: initializationError(...): [Lorg/codehaus/groovy/runtime/callsite/CallSite;
You may only see one line in the Maven output which is not particularly helpful. However, you can look at the detailed test output. In Hudson, it would be at a location under HUDSON_HOME similar to jobs\<your job>\workspace\target\surefire-reports\ Looking here, you may see an error java.lang.NoClassDefFoundError: [Lorg/codehaus/groovy/runtime/callsite/CallSite;
To fix this, update your Groovy Maven run-time coordinates to:
<groupId>org.codehaus.groovy.maven.runtime</groupId>
<artifactId>gmaven-runtime-1.6</artifactId>
<version>1.0</version>
<scope>test</scope>
After all this, you should finally see your Groovy test executed in the Maven output.
delegate.programArguments = args
delegate.init()
delegate.run()
// No more System.exit!
}
However, to get Groovy test cases to run inside Maven (and outside of Eclipse) requires some tweaks. First of all, you have to make Maven aware that there are Groovy test cases to execute, or else it won't even find them The section "Configuring Maven2 to compile and run your Groovy tests" in the article Writing unit tests using Groovy is mostly correct but it is out-of-date. If you use its Maven coordinates verbatim, you will have errors in your Maven output.
Error: Execution default of goal org.codehaus.mojo.groovy:groovy-maven-plugin:1.0-beta-3:testCompile failed: An API incompatibility was encountered while executing org.codehaus.mojo.groovy:groovy-maven-plugin:1.0-beta-3:testCompile: java.lang.NoSuchMethodError: org.codehaus.plexus.PlexusContainer.hasChildContainer(Ljava/lang/String;)Z
This can be corrected by changing the coordinates of the Groovy Maven plugin to:
<groupId>org.codehaus.mojo</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>1.3</version>
Error: Failed to execute goal org.codehaus.mojo:groovy-maven-plugin:1.3:testCompile ... Unknown type: METHOD_DEF
This can be caused by anonymous inner classes in the code. Groovy for Java Programmers gives some suggestions for how to re-format your code so that Groovy can properly parse it and recognize an anonymous inner class definition, however these suggestions didn't work for me. Anonymous inner class are a convenience so one can re-write the code to eliminate them.
Error: initializationError(...): [Lorg/codehaus/groovy/runtime/callsite/CallSite;
You may only see one line in the Maven output which is not particularly helpful. However, you can look at the detailed test output. In Hudson, it would be at a location under HUDSON_HOME similar to jobs\<your job>\workspace\target\surefire-reports\ Looking here, you may see an error java.lang.NoClassDefFoundError: [Lorg/codehaus/groovy/runtime/callsite/CallSite;
To fix this, update your Groovy Maven run-time coordinates to:
<groupId>org.codehaus.groovy.maven.runtime</groupId>
<artifactId>gmaven-runtime-1.6</artifactId>
<version>1.0</version>
<scope>test</scope>
After all this, you should finally see your Groovy test executed in the Maven output.
Tuesday, November 29, 2011
Maven install:install-file output is misleading?
Using Apache Maven 3.0.3 (r1075438), Maven will report "BUILD SUCCESS" even when the file argument points to a non-existent file (e.g. mvn install:install-file -Dfile=C:\temp\jmockit.jar ...). Naturally, this can lead to some confusion when your source code still refuses to compile.
Subscribe to:
Posts (Atom)