这里是我所做的: -
- 安装V6.9的NodeJS +
- 运行NPM安装@角/ CLI -g对角CLI
- 安装Apache Maven或使用任何Maven友好的IDE
- 使用您所需的Maven配置,我使用了简单的webapp(WAR)。
指南Stucture(除ngapp夹其余部分是标准的Maven结构。)
ngfirst
├── pom.xml
├── src
│ └── main
│ ├── java
│ ├── resources
│ ├── webapp
│ └── ngapp
角部位
打开ngapp在终端文件夹并键入纳克init命令初始化节点和npm配置上,其结果将是一个简单的Angular2示例应用程序将ngapp文件夹内的目录结构如下: -
├── angular-cli.json
├── e2e
├── karma.conf.js
├── node_modules
├── package.json
├── protractor.conf.js
├── README.md
├── tslint.json
├── src
├── app
├── assets
├── environments
├── favicon.ico
├── index.html
├── main.ts
├── polyfills.ts
├── styles.css
├── test.ts
└── tsconfig.json
这种结构是Maven项目结构的角度相当于和SRC目录是角应用程序的源代码,就像maven build命令在目标文件夹中产生其输出,ng build命令在dist文件夹中产生其输出。
为了封装内的Maven所产生的角应用程序生成WAR修改构建配置以从DIST更改输出文件夹到web应用,开放角cli.json文件并修改其OUTDIR如下: -
"outDir": "../webapp/ng"
此时纳克建立命令会产生内建成纳克目录 ngfirst/src目录的角应用/主/ webapp文件夹。
Maven的部分
开放的pom.xml,并配置以下三个Maven插件: -
- 编译器插件:没有Java的东西来编译/ src目录/主/ ngapp文件夹,排除它。
- war-plugin:/ src/main/ngapp是Angular项目文件夹,它不应该打包成WAR,排除它。
- exec-plugin:执行NPM Install和Angular-CLI构建命令以在webapp文件夹中生成Angular Application以进行最终打包。注意--base-href参数,它需要从webapp的上下文路径加载Angular资源。
这是应该的样子: -
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<excludes>
<exclude>ngapp/**</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<excludes>
<exclude>ngapp/**</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>exec-npm-install</id>
<phase>generate-sources</phase>
<configuration>
<workingDirectory>${project.basedir}/src/main/ngapp</workingDirectory>
<executable>npm</executable>
<arguments>
<argument>install</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
<execution>
<id>exec-npm-ng-build</id>
<phase>generate-sources</phase>
<configuration>
<workingDirectory>${project.basedir}/src/main/ngapp</workingDirectory>
<executable>ng</executable>
<arguments>
<argument>build</argument>
<argument>--base-href=/ngfirst/ng/</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
大厦Maven项目(与角应用程序也是如此)
打开终端,在项目的根文件夹ngfirst和运行MVN包命令,这将生成一个WAR文件(ngfirst.war)目标文件夹。
部署ngfirst.war在一个容器中,在浏览器中打开http://localhost:8080/ngfirst/ng/index.html。 (如果需要,调整您的主机名和端口)
如果一切正常,您应该看到应用程序的作品!在浏览器中,这是在工作中的角度应用程序!
JSP预加工
我们可以利用与角应用JSP技术的动态配置和页面渲染能力,角SPA是由Java容器作为普通的HTML网页中投放,的index.html在这个如果我们配置JSP Engine来预处理HTML文件,那么所有的JSP魔术都可以包含在Angular SPA页面中,只需在网页内包含以下内容即可。XML
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
保存,重建Maven项目,部署WAR瞧!
我建立我的应用程序使用弹簧引导,我们为angular2罐。对于示例请参阅https://github.com/Kiran-N/springboot-and-angular2 – Developer
有类似的任务,这里是我的方法http://stackoverflow.com/questions/37512154/configure-angular-2-project-with -maven-and-spring-rest/42283956#42283956 –