Launch GWT in dev mode while running server on Spring-boot - gwt

I have created web application using Spring boot and gwt 2.6.0.
Changed location of generated files:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>${gwt.plugin.version}</version>
<executions>
<execution>
<configuration>
<module>my.module</module>
<webappDirectory>src/main/resources/gwt-public/</webappDirectory>
</configuration>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
And if running my application standalone everything works correctly, because all the needed files are accessible.
But the question is - how to run GWT in development mode (from Intellij IDEA). I am trying to run it in -noserver mode, it launches but in browser there is nothing.
As I understand I need to specify war directory which is used by dev plugin, so it means I need to explicitly set packaging to war? I have no clear thoughts about it.

you can compile a war, run the server and then run gwt debug, but after the browser opens change the url to the localhost:xxxx whatever spring is running, but leave the servercode=127.0.0.1 as is.
or you can use gwt:debug on maven plugin instaed of compile.
looky here: http://mojo.codehaus.org/gwt-maven-plugin/debug-mojo.html

I got this working by adding this to your gwt-maven-plugin configuration:
<superDevMode>false</superDevMode>
If you are going to change the URL as Zerkotin suggests, then I supplied this additional property:
<noServer>true</noServer>
to stop the mvn-gwt-plugin from starting up the embedded Jetty instance. But this did not allow me to recompile on the fly.
To get it working in super dev mode, I set this up in my gwt-maven-plugin config:
true
true
Then I started up Spring Boot as normal (using java -jar myweb.jar). Then I started up maven gwt plugin (mvn gwt-debug), attached IntelliJ to the debugger (using remote), went to code server URL (NOT my app URL), set up those book marklets, then went to my app URL, and when I want to recompile, I just hit those bookmarklets.

Related

How do I exclude Maven resources when publishing from Eclipse WTP to a server?

How do I make WTP exclude Maven resources in the src/main/resources folder, when it deploys or publishes to a server? For example, I created a few folders named src/main/resources/qa and src/main/resources/prod, and in there I have properties files. I want to use them for deployment, but I don't want them in the WAR file artifact.
By adding a resources stanza to my pom.xml, I can exclude those folders from Maven builds (e.g. when I run mvn package), and they won't show up in my WAR file artifact.
But, when I use the "Debug As.." approach with WTP to let Eclipse manage and attach to my local Tomcat server, I can see that WTP is publishing all the resources including my excluded folders in the local Tomcat server. I have watched the wtpwebapp folder, that is the deployment target WTP is using, disappear when I have removed my WAR artifact from the Eclipse server definition. Then, the excluded resources find their way back when I add the project back to the server.
I have tried explicitly excluding the folders with "**/qa/" and "**/prod/" entries in the Java Build path for my project on the appropriate source libraries, and in fact, recreating the Eclipse project using mvn eclipse:clean eclipse:eclipse -Dwtpversion=2.0 will add the build path exclusions for me automatically. They just don't seem to be honored when WTP publishes.
#Greg,
One option to consider is having Maven instead of Eclipse WTP push the WAR to the server.
This might entail tradeoffs depending on what Eclipse is doing for you behind the scenes.
Then again, your desktop will more exactly mirror what happens in your CI build.
Anyway, this guide explains in good depth how to configure the tomcat7:deploy goal.
Here is a suggested pom.xml snippet to get you started:
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<phase>deploy</phase>
<goals>
<goal>redeploy</goal>
</goals>
<configuration>
<url>http://localhost:8080/manager/text</url>
<server>TomcatServer</server>
<path>/mkyongWebApp</path>
</configuration>
</execution>
</execution>
</plugin>
</plugins>

Debuggin Vert.x-Maven-Projekt inside Eclipse

I am currently developing an Vert.x Application inside Eclipse with maven. I did the Projekt-Setup like descripted here: http://vertx.io/maven_dev.html
Everything went fine, the project builds succesfully and the server gets started successfully in debug mode via the maven launch configuration with the goal: package vertx:runMod
However, if i set a breakpoint, the debugger stops at the right position and showing me the right stacktrace but it doesnt show me the line inside the source. instead of that it shows the infamous "Source not found"-screen with the "Edit Source Lookup Path"-Button.
The funny thing about this is that this also happens when the breakpoint is inside one of my own java files.
I can also navigate into the source of for example vertx-core-2.0.0-final-sources.jar via STRG-Left click on a vert.x class . After doing this i can see the debug-Infos on Variables ect. via mouse-over as usual. If i double click on the stack again eclipse changes back to the "source not found"-screen-tab again.
I also tried to run the maven goal "clean eclipse:eclipse" on my Project as suggested here: Run Vertx in an IDE with no success.
I also tried all suggestions from here: Eclipse Maven debug - source not found with no success
I think it has something to do with the way the application gets launched. (via vert.x Container-Instance out of maven goal)
Its Eclipse Luna (4.4) with m2e-Plugin vers. 1.5 with maven 3.2.1, and vert.x 2.1
Any Help would be great. THX in advance
At least i found out how to debug into my own source files. I simply had to generate the source.jar for my project when it gets installed via the maven goal. I added the following to my pom under the <plugins> -section
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
After that i linked this generated source-jar-file to my debugger via the "Edit Source Lookup Path"-Button (this has to be done only the first time)
The flaw about this is, if i change a single line in my source files i have to rebuild the whole projekt including the source.jar via maven -install. If i am not doing this the debugger ends up in wrong line numbers.
I also didnt found out how to debug into the classes that are inside my dependency-jars. So at least this isnt solved yet.

wro4j & m2e Eclipse not compiling LESS

I am trying to setup my developer env so that I can use maven to compile my LESS files for formal builds, but also have Eclipse compile the LESS for incremental builds so I dont have to keep kicking of maven tasks every time I make a LESS change. Having looked around - it seems like wro4j & the maven plugin & the m2e-wtp plugin should provide all that.
My setup is as follows: I have just installed the latest stable Eclipse (Java EE package, that includes the WTP stuff - v4.3) and I have installed the m2e plugin and the m2e-wtp plugins.
pom.xml:
<plugin>
<groupId>ro.isdc.wro4j</groupId>
<artifactId>wro4j-maven-plugin</artifactId>
<version>1.4.5</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<configuration>
<targetGroups>roa-all</targetGroups>
<destinationFolder>${project.build.directory}/${project.build.finalName}</destinationFolder>
<cssDestinationFolder>${project.build.directory}/${project.build.finalName}/css/</cssDestinationFolder>
<jsDestinationFolder>${project.build.directory}/${project.build.finalName}/js/</jsDestinationFolder>
<wroManagerFactory>ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory</wroManagerFactory>
</configuration>
</plugin>
wro.properties:
preProcessors=cssImport,semicolonAppender
postProcessors=lessCss,cssMinJawr
wro.xml:
<groups xmlns="http://www.isdc.ro/wro">
<group name="roa-all">
<css>/less/*.less</css>
</group>
</groups>
Inside my /less/ folder are basically a few css files that I have renamed .less files, and one where I have actually added some LESS syntax with a few colour variables set. This mostly works, as I make changes to my LESS, the plugin detects and rebuilds my uber css file, however, rather critically, it doesn't seem to be compiling the LESS - it combines the files, and minifies, but my #variables are all still in LESS syntax.
I also noticed that the maven plugin was up to v 1.7.0 so tried upgrading to that to see if that was the problem, but that just does nothing at all (nothing gets built at all and I have no uber css etc)
Anyone had any experience setting this up or know anything I have missed in the setup?
The problem was because I had some invalid LESS in one of my files - this basically meant the compile step was failing, so the other LESS files were not being compiled to CSS (which resulted in the LESS variables being output in my file) - With the Eclipse incremental build, this failure was not being reported so I didn't see it.
I discovered it by explicitly running the maven command, and then got the normal maven logs which included details of the compilation failure.
That aside, the eclipse incremental build for LESS is working really nicely since!
As mentioned in the comments above, I wrote up how to set it all up here:
Eclipse & LESS - Better development time with incremental builds

Run JET Templates without Eclipse

I need to generate java code from jet templates using a maven project and it should be done outside eclipse environment, but so far i haven't figure out how to do this.
I'm using maven 3x and jet 1.1.x.
I've tried several approaches but none of them seems to work:
invoke library org.eclipse.emf.codegen.jet.JETCompiler. This library seems to have a strong dependency with eclipse's environment and for such reason it failed.
one of maven's jet plugin doesn't work neither and i'm using the same example as provided in the offical website ([tikal-maven-jet-plugin][1]), here's how it looks like:
http://network.tikalk.com/release/tikal-maven-jet-plugin/usage.html
Does anyone have an idea how to do this?
Thanks a lot,
Carlos
Because of the way JET works, it'll only actually be runnable inside an eclipse environment. However, it's actually possible to launch eclipse headlessly to run an ant build script, so you get the eclipse parts you need running, without the UI. In order to do this, you need to launch the org.eclipse.ant.core.antRunner application. There's some documentation on how to do that here: http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Ftasks%2FantRunner.htm
Once you've launched the antRunner application, you can use the JET ant tasks to compile your templates and run your transform: http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.jet.doc%2Freferences%2Fant%2FantTasks.xhtml
There are some important caveats about headless template compilation which are relevant if you're headlessly compiling eclipse plugins, documented here: http://wiki.eclipse.org/JET_FAQ_How_to_I_compile_JET_templates_in_a_headless_build
I'm not sure how well any of this integrated with Maven, but this seems to be the best approach from ant. If you're wanting to run a transform from Java, there's some information here: http://wiki.eclipse.org/JET_FAQ_How_do_I_run_a_JET_transformation_from_Java%3F. You will still need to be in an eclipse environment for it to work though.
The tikal-maven-jet-plugin worked for me.
Here's a sample of a JET file I used in src/main/templates/generator.jet, I don't use the EMF classes, just standard Map.
<%# jet class="TableModelGenerator" package="net.trajano.framework.tool" %>
<% java.util.Map meta = (java.util.Map)argument; %>
package <%=meta.get("PackageName")%>;
public class <%=meta.get("ClassName")%> {
}
The plugin configuration I used is
<plugin>
<groupId>com.tikal</groupId>
<artifactId>tikal-maven-jet-plugin</artifactId>
<version>0.4.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<includeTemplates>
<include>**/*.jet</include>
</includeTemplates>
</configuration>
</plugin>

How to add a jar to the server lib for *embedded* JBoss?

I need to add a crypto provider to the embedded JBoss used by Seam for integration tests.
For the regular JBoss it's a simple matter, just drop the files into the /lib folder of the server instance. With the embedded JBoss, however, things seem to be different. I've tried putting the jars in /embedded-jboss/bootstrap/lib and /embedded-jboss but no change, the classes are not seen.
I've read http://community.jboss.org/wiki/EmbeddedAndJavaSE and also looked in the source of org.jboss.embedded.Bootstrap but I haven't found a way yet. The build is done with Maven if it matters.
Thanks a lot for any suggestions.
I found an answer in the meantime: they can be added to the classpath of the plugin that runs the tests, like below. Works for me.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- snip -->
<additionalClasspathElements>
<additionalClasspathElement>add/here/your/jar</additionalClasspathElement>
</additionalClasspathElements>