2016-11-30 1 views
3

У меня возникла проблема во время развертывания Java-приложения с функцией Angular 2 fronend.Развертывание на Java-приложении Heroku с Angular2 fronend

Мое приложение должно быть установлено с помощью NodeJs, и это «npm install» для извлечения всех его зависимостей из package.json. И только, чем с maven. Приложение Angular2 находится в папке java webapp. Я видел сборные, чтобы установить его. Но они не работают. Например это один

https://github.com/Vincit/heroku-buildpack-java-nodejs

Он ищет * .ts файлы в корневой папке, но не в папке Java «WebAPP». Есть ли какие-то умные сборки для такой задачи или другие удобные способы сделать это просто?

Спасибо заранее!

ответ

0

Вы можете сделать это с помощью поддержки Heroku для multiple buildpacks on an app. Короче говоря, бежать:

$ heroku buildpacks:clear 
$ heroku buildpacks:add heroku/nodejs 
$ heroku buildpacks:add heroku/java 

В вашем случае, ситуация, вероятно, очень похож на this JHipster example, который использует Node.js и угловой. Есть несколько вещей, которые следует учитывать:

  • Heroku Node.js buildpack will not install devDependencies by default. Вам либо нужно переместить их на dependencies, либо установить конфигурацию var NPM_CONFIG_PRODUCTION=false.
  • Если вам не нужен ваш каталог node_modules или Node.js во время выполнения, он сделает ваше приложение огромным. Вы можете использовать Maven для их удаления.

Вот пример:

<plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.5</version> 
    <executions> 
    <execution> 
     <id>clean-build-artifacts</id> 
     <phase>install</phase> 
     <goals><goal>clean</goal></goals> 
     <configuration> 
     <excludeDefaultDirectories>true</excludeDefaultDirectories> 
     <filesets> 
      <fileset> 
      <directory>node_modules</directory> 
      </fileset> 
      <fileset> 
      <directory>.heroku/node</directory> 
      </fileset> 
     </filesets> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

Это описано более подробно в JHipster post.

0

Я использую этот плагин:

https://github.com/eirslett/frontend-maven-plugin

<plugin> 
    <groupId>com.github.eirslett</groupId> 
    <artifactId>frontend-maven-plugin</artifactId> 
    <version>1.0</version> 
    <executions> 
     <execution> 
     <id>install node and npm</id> 
     <goals> 
     <goal>install-node-and-npm</goal> 
     </goals> 
     <configuration> 
     <nodeVersion>v4.4.3</nodeVersion> 
     <npmVersion>3.8.3</npmVersion>          
     </configuration> 
    </execution> 
    <execution> 
     <id>npm install</id> 
     <goals> 
     <goal>npm</goal> 
     </goals> 
     <configuration> 
     <arguments>--strict-ssl=false install</arguments> 
     </configuration> 
     </execution>        
     <execution> 
     <id>npm build prod</id> 
     <goals> 
     <goal>npm</goal> 
     </goals> 
    <configuration> 
    <arguments>run build.prod</arguments> 
    </configuration> 
    </execution> 
    </executions> 
    </plugin> 

НПЙ build.prod мой глоток задача построить для развертывания прода и указана в качестве сценария в моем package.json (я использую угловые 2 семян): https://github.com/mgechev/angular-seed

мне пришлось создать задачу для копирования на место для моего Java приложения, чтобы использовать файлы статический:

import * as gulp from 'gulp'; 
let gnf = require('gulp-npm-files'); 
let resourceDest = 'src/main/resources/public'; 

export =() => { 

     gulp.src('**', {cwd:'./dist/prod'}).pipe(gulp.dest(resourceDest)); 
     gulp.src(gnf(), {base:'./'}).pipe(gulp.dest(resourceDest)); 


}; 

Это копирует мой скомпилированный угловой 2 javascript в src/main/resources/public