Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
minLevel3

...

  1. Install the latest Eclipse (for Java Development)
  2. Install the Google Plug-in for Eclipse.  Do not include GWT SDK in the install (GWT SDK will be installed by the maven install).  Do not install the Google App Engine Maven Integration.
  3. Import the project as a maven project
    1. File → Import → Maven → Existing Maven Projects
    2. Next, in Root Directory enter the local path to your repository clone
    3. Next, Finish 
  4. You need to make sure the GWT xml files are on the classpath. All of these resources can be found in src/main/resources and src/test/resources directories. 
    1. Right-click on portal (project name) → Build Path → Configure Build Path...
    2. Remove the "Exclude" filter from the source tab on the src/main/resources and src/test/resources directories.
  5. We need to tell the GWT Eclipse-plugin that this is a GWT project. Do this by Right-Clicking on the project in the package explorer and select: Google → Web Toolkit Settings...
    1. From the resulting dialog make sure the "Use Google Web Toolkit" check box is selected.
    2. Also make sure you are using the GWT SDK from your local maven repository (.m2/repository/com/google/gwt)
  6. Verify GWT can compile your code
    1. Right-Click on the project from the package explorer.
    2. Select Google→GWT Compile...
    3. Under the "Entry Point Modules" you should see "PortalDebug - org.sagebionetworks.web",  if not, then add it with the add button.
    4. Remove the "Portal - org.sagebionetworks.web" entry.
    5. The first time you run this you will be asked to select the output directory where GWT will compile the code. You want this to match the Maven WAR output directory, so use "target/portal-<VERSION>-SNAPSHOT"
    6. If you get compilation errors from the JavaScript validator (i.e. NullPointerException), navigate to the project's properties → JavaScript → Include Path → Source, and exclude all files from the source. If an OutOfMemoryError was thrown while compiling, you can click the "Advanced" tab towards the bottom of the Google → GWT Compile window and add "-Xms512M -Xmx1524M" to the VM arguments to increase heap space.
  7. SWC uses Sass. SCSS compilation is done by Maven during the compile step. To do this automatically in Eclipse (without compiling the entire app), we can add a custom builder
    1. Open the project properties and navigate to Builders
    2. Create a new Program Builder
      1. Set the Location value to the installed node binary: ${workspace_loc:/portal/node/node}
      2. Set the Working directory to the SWC project (e.g. ${workspace_loc:/portal})
      3. Set the following arguments:

        Code Block
        ${workspace_loc:/portal/node/yarn/dist/bin/yarn.js}
        sass
        --no-source-map
        --style=compressed
        --unicode
        --stop-on-error
        --update 
        --load-path=.node_modules
        src/main/webapp/sass:target/portal-develop-SNAPSHOT/generated


    3. Under Build Options - Allocate Console, Launch in background, and run this builder during all operations listed.
  8. Since we're using Jetty in Eclipse, we also need to make sure our JavaScript dependencies that we pulled from NPM are copied to the src/main/webapp folder
    1. Open the project properties and navigate to Builders
    2. Create a new Ant Builder
      1. Set the Buildfile to ${workspace_loc:/portal/copy_eclipse_deps.xml}
      2. Set the Base Directory to ${workspace_loc:/portal}
      3. Go to the Targets tab. For "Auto Build", click "Set Targets" and select copy
  9. If the GWT Compile successfully compiled, then you're ready to run the application.
    1. Right-Click on the project in the package explorer
    2. Select: Run As → GWT Development Mode with Jetty, and select Portal.html
    3. Double-click on the link provided in the Development Mode window to view the portal in your browser. 
  10. To run the unit tests:
    1. Right-Click on the project from the package explorer.
    2. Select: Run As → JUnit Test

...

  1. Download IntelliJ community edition, it comes pre-built with GWT and Maven support. 
  2. Install GWT SDK (install the actual SDK, not the eclipse plugin version)
    1. If downloading Java for the first time then download Java 8 as well.
  3. If you want to run Maven manually then install it from here (this will require you to add the mvn installation directory to your PATH as well), otherwise see notes here on configuring IntelliJ to run maven build.
  4. Import the SWC into IntelliJ by File → New Project From Existing Sources... <Select Path to SWC Location>
  5. To Setup running the GWT server from Intellij
    1. In the Menu bar Run > Edit configurations
    2. Click the "+" button to add an new configuration and choose "GWT Configuration".
    3. This is what the configuration looks like on Windows, adapt the file paths to your project repository's location
      1. Dev Mode Parameter should be:
        1. -war target/portal-develop-SNAPSHOT

    4. The "Before Launch" tools can be ignored.
      1. It is simply a shortcut a execute the same command executed by the libsass-maven-plugin in the root pom.xml if using Maven to run GWT.
      2. The alternative is to run this command manually in the command line, whenever the CSS gets messed up.
        sass --no-source-map --load-path=. node_modules --style=compressed --unicode --stop-on-error --update "./src/main/webapp/sass":"./target/portal-develop-SNAPSHOT"
        • This is caused by the GWT runner in IntelliJ sometimes clearing out the /target directory when recompiling
        • Even setting up SASS command in the "before launch" does ensure the CSS is compiled automatically
          • The CSS will be compiled immediately before the GWT server runs. The GWT server then clears out the /target folder containing the compiled CSS
          • The only benefit to the set up is that a tab for SASS is created next to the GWT Server's tab, which you can then manually run after the GWT server has started up.
          • This is very annoying and any improvements to this workflow would be greatly appreciated.
  6. If running Maven manually run like so (see note below on saving build time by running in debug mode):
    1. Run 'mvn clean install'
    2. Run 'mvn gwt:run'
      1. Not recommended because it currently does not detect changes to the .ui.xml files, which forces you to kill, redo mvn clean install, and restart the server.
      2. Running in the IDE will detect .ui.xml changes

...

Set the repository endpoint parameters in your maven settings.xml file. 

To point to staging set:

<org.sagebionetworks.repositoryservice.endpoint>https://repo-staging.prod.sagebase.org/repo/v1</org.sagebionetworks.repositoryservice.endpoint>

To point to production set:

...