小さなアプリケーションをangular 1からangular 2にアップグレードしたかった。angular 2とノードに少し慣れていない構成。私のWebアプリケーションはEclipseとMavenを使用しています。問題は、angular 2)を使用して構成できなかったことです。
どのディレクトリ構造を使用する必要がありますか?
利用可能なMavenプラグインがありますが、angular 2アプリのディレクトリ構造について少し混乱しています。
ここからangular site は、angular 2プロジェクトを構築する方法のいくつかのデモンストレーションを示しています。EclipsemavenWebアプリではクライアント側のファイルを、web-infフォルダーと同じレベルのsrc/main/resourcesフォルダーで起動します。
Maven pom.xml、これをプロジェクトに含めます。 Maven-fronted-pluginを本番環境に使用しないでください。 Mavenは、このセットアップでプロジェクトルートレベルにnodeとnode_modulesの2つのフォルダーをインストールします。
<build>
<plugins>
<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>v5.3.0</nodeVersion>
<npmVersion>3.3.12</npmVersion>
</configuration>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<!-- Optional configuration which provides for running any npm command -->
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
package.jsonは、mavenクリーンインストールの前にこれをプロジェクトのルートレベルに追加します。
{
"name": "budget_calculator",
"version": "1.0.0",
"dependencies": {
"@angular/common": "2.0.0-rc.1",
"@angular/compiler": "2.0.0-rc.1",
"@angular/core": "2.0.0-rc.1",
"@angular/http": "2.0.0-rc.1",
"@angular/platform-browser": "2.0.0-rc.1",
"@angular/platform-browser-dynamic": "2.0.0-rc.1",
"@angular/router": "2.0.0-rc.1",
"@angular/router-deprecated": "2.0.0-rc.1",
"@angular/upgrade": "2.0.0-rc.1",
"systemjs": "0.19.27",
"core-js": "^2.4.0",
"reflect-metadata": "^0.1.3",
"rxjs": "5.0.0-beta.6",
"zone.js": "^0.6.12",
"angular2-in-memory-web-api": "0.0.10",
"bootstrap": "^3.3.6"
}
}
これが私がしたことです:-
Directory Stucture(ngappを除いて、フォルダーの残りは標準のMaven構造です。)
ngfirst
├── pom.xml
├── src
│ └── main
│ ├── Java
│ ├── resources
│ ├── webapp
│ └── ngapp
角度部分
ターミナルでngappフォルダーを開き、ng 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
この構造はAngular Mavenプロジェクト構造と同等であり、srcディレクトリはAngular maven buildコマンドと同様に、アプリケーションのソースはtargetフォルダーに出力を生成します、ng buildコマンドは、その出力をdistフォルダーに生成します。
生成されたAngularアプリケーションをMavenで生成されたWAR内にパッケージ化するには、ビルド構成を変更して、出力フォルダーをdistから変更します。 webappに移動し、angular-cli.jsonファイルを開いて、そのoutDirを変更します以下のように:-
"outDir": "../webapp/ng"
この時点でng buildコマンドはビルドされたAngularアプリケーション内部ngngfirst/src/main /webappフォルダーのディレクトリ。
Mavenパーツ
Pom.xmlを開き、次の3つのMavenプラグインを構成します。-
これがどのように見えるべきかです:-
<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>
Building Maven Project(およびAngularアプリも)
プロジェクトのルートフォルダーngfirstでターミナルを開き、mvn packageコマンドを実行します。 targetフォルダーにWARファイル(ngfirst.war)を生成します。
ngfirst.warをコンテナーにデプロイし、 http:// localhost:8080/ngfirst/ng/index.html を開きます。ブラウザ。 (必要に応じてホスト名とポートを調整します)
すべてがうまくいけば、ブラウザにアプリが機能する!、つまりAngularアプリケーションが機能している!!
JSP前処理
Angular application、Angular SPAはJavaによって提供され、JSPテクノロジーの動的構成およびページレンダリング機能を活用できます。通常のHTMLページとしてのコンテナindex.htmlこの場合、HTMLファイルも前処理するようにJSPエンジンを構成すると、すべてのJSPマジックはAngular SPAページ内に含まれています。次の内部web.xmlを含めるだけです。
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
Mavenプロジェクトを保存、再構築し、WARと出来上がりをデプロイします!!