Signed-off-by: Valeriy Svydenko <vsvydenk@redhat.com> |
||
|---|---|---|
| .. | ||
| che-core-dyna-provider-generator-maven-plugin | ||
| che-core-ide-api | ||
| che-core-ide-app | ||
| che-core-ide-generators | ||
| che-core-ide-stacks | ||
| che-core-ide-templates | ||
| che-core-ide-ui | ||
| che-core-orion-editor | ||
| che-ide-core | ||
| che-ide-full | ||
| che-ide-gwt-app | ||
| commons-gwt | ||
| gwt-logger | ||
| README.md | ||
| pom.xml | ||
README.md
Che IDE
- Making a GWT library for the IDE GWT app
- Including an IDE plugin to the IDE GWT app
- GWT Super DevMode
- Extending IDE GWT app
Making a GWT library for the IDE GWT app
GWT library it's a JAR that contains compiled classes, project's (re-)sources, GWT module descriptor (*.gwt.xml) and possibly other GWT-specific files.
pom.xml
To make a GWT library (e.g., IDE plugin) for using it in IDE GWT app just do the two steps in your pom.xml:
- add the
gwt-maven-pluginconfiguring GWT module name:<plugin> <groupId>net.ltgt.gwt.maven</groupId> <artifactId>gwt-maven-plugin</artifactId> <extensions>true</extensions> <configuration> <moduleName>org.eclipse.che.plugin.python.Python</moduleName> </configuration> </plugin> - set packaging to
gwt-libwhich triggers a Maven lifecycle that will build agwt-libartifact.
*.gwt.xml
Project's *.gwt.xml file is generated within the gwt-lib Maven lifecycle and contains:
- the declarations for the default source folders:
<source path="client"/> <source path="shared"/> <super-source path="super"/> <inherits/>directives for the project's direct dependencies which were packaged as agwt-lib.
Optional template may be provided in src/main/module.gwt.xml for generating project's *.gwt.xml file.
The most common cases when you may require a template:
- need to override the default source folders, like here;
- need to add
<inherits/>directive for a GWT lib that isn't packaged as agwt-libartifact (doesn't contain GWT-specific meta information).
Consuming the shared libraries
The shared libraries don't require any GWT-specific files or configuration in pom.xml to be consumed by a GWT library.
To use shared code in a GWT library:
- declare a dependency on the "normal" artifact (JAR with compiled classes);
- declare a dependency on the "sources" artifact (with
<classifier>sources</classifier>).
See an example here.
Including an IDE plugin to the IDE GWT app
Just add a Maven dependency on the appropriate artifact (gwt-lib) to the che-ide-gwt-app's pom.xml.
In case the added artifact represents Che's sub-project, dependency should be declared with <type>gwt-lib</type> or <classifier>sources</classifier> to be able to use it with Super DevMode.
GWT Super DevMode
There are two options available to launch GWT Super DevMode, depending on the state of the Che sources: whether it's built or not since a lot of sources are generated during the Maven build.
- Case 1: Che sources have been already built. Use the following command:
mvn gwt:codeserver -pl :che-ide-gwt-app -am -Dmaven.main.skip -Dmaven.resources.skip -Dche.dto.skip -Dskip-enforce -Dskip-validate-sources
- Case 2: Che sources haven't been built, e.g. freshly cloned or after executing
mvn cleanor you just don't need to build the whole project. Use the following command:
mvn gwt:codeserver -pl :che-ide-gwt-app -am -Dskip-enforce -Dskip-validate-sources
The second one requires more time to launch GWT CodeServer since the second one it executes process-classes build phase for each maven module. So using the first command is preferable.
Note, both commands have to be performed in the root folder of the Che project.
Extending IDE GWT app
There're two GWT libraries provided which allows you to easily extend IDE GWT app: Basic IDE and Full IDE.
Basic IDE represents IDE without any plugins. It allows you to compile IDE GWT app with your own IDE plugins only, e.g.:
<dependencies>
<dependency>
<groupId>org.eclipse.che.core</groupId>
<artifactId>che-ide-core</artifactId>
</dependency>
<dependency>
<groupId>my.ide.plugin</groupId>
<artifactId>my-ide-plugin</artifactId>
</dependency>
</dependencies>
Full IDE represents IDE with full set of the standard plugins. It allows you to compile IDE GWT app excluding some of the standard plugins and/or including your own IDE plugins, e.g.:
<dependencies>
<dependency>
<groupId>org.eclipse.che.core</groupId>
<artifactId>che-ide-full</artifactId>
<exclusions>
<exclusion>
<artifactId>che-plugin-product-info</artifactId>
<groupId>org.eclipse.che.plugin</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>my.ide.plugin</groupId>
<artifactId>my-ide-plugin</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.che.core</groupId>
<artifactId>che-core-gwt-maven-plugin</artifactId>
<version>${project.version}</version>
<executions>
<execution>
<goals>
<goal>process-excludes</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Note that che-core-gwt-maven-plugin have to be added in order to correctly process the IDE plugins exclusions.