让我先说一下,我是Maven /
Spring的新手,当我的目录不遵循首选的Maven结构时,我很难搞清楚要做什么.
我通过这个tutorial遵循了使用Angular 2和Spring Boot设置项目的说明.本教程创建了两个模块,前端和后端,以及相应的pom.xml和一个父pom.xml.我可以使用我的IDE,IntelliJ或从后端目录运行“mvn spring-boot:run”来运行应用程序.但是,对于部署,我希望将应用程序打包到WAR文件中以放入Tomcat服务器.我不确定如何使用我目前拥有的pom.xml来做到这一点.我很确定它与我的目录结构有关,但是我不确定是否应该重构我的应用程序,或者有一种方法可以配置Maven将这两个模块放入生成预期的WAR文件中.
我找到了类似的答案here,但最后一部分是什么让我失望.我没有/ src / main / webapp / WEB-INF文件夹,我不确定在哪里制作它.
我的申请结构如下:
- AppRoot
- -backend
- --src
- ---main
- ----java
- --pom.xml
- -frontend
- --src
- ---main
- ----frontend
- --pom.xml
- -pom.xml
我的root pom.xml是:
- <groupId>com.trinityinnovations</groupId>
- <artifactId>parent</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>pom</packaging>
- <name>c-cop</name>
- <description>C-COP Project</description>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>1.5.2.RELEASE</version>
- <relativePath/> <!-- lookup parent from repository -->
- </parent>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- </properties>
- <modules>
- <module>frontend</module>
- <module>backend</module>
- <module>web</module>
前端pom.xml:
- <artifactId>frontend</artifactId>
- <name>frontend</name>
- <description>C-COP Project frontend</description>
- <parent>
- <groupId>com.trinityinnovations</groupId>
- <artifactId>parent</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
- <build>
- <plugins>
- <plugin>
- <groupId>com.github.eirslett</groupId>
- <artifactId>frontend-maven-plugin</artifactId>
- <version>1.3</version>
- <configuration>
- <nodeVersion>v6.9.1</nodeVersion>
- <npmVersion>4.0.3</npmVersion>
- <workingDirectory>src/main/frontend</workingDirectory>
- </configuration>
- <executions>
- <execution>
- <id>install node and npm</id>
- <goals>
- <goal>install-node-and-npm</goal>
- </goals>
- </execution>
- <execution>
- <id>npm install</id>
- <goals>
- <goal>npm</goal>
- </goals>
- </execution>
- <execution>
- <id>npm run build</id>
- <goals>
- <goal>npm</goal>
- </goals>
- <configuration>
- <arguments>run build</arguments>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- <resources>
- <resource>
- <directory>target/frontend</directory>
- <targetPath>static</targetPath>
- </resource>
- </resources>
- </build>
后端pom.xml:
- <artifactId>backend</artifactId>
- <name>backend</name>
- <description>C-COP Project backend</description>
- <parent>
- <groupId>com.trinityinnovations</groupId>
- <artifactId>parent</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.restdocs</groupId>
- <artifactId>spring-restdocs-mockmvc</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.trinityinnovations</groupId>
- <artifactId>frontend</artifactId>
- <version>${project.version}</version>
- <scope>runtime</scope>
- </dependency>
- <!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
- <dependency>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- <version>3.1</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-csv -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-csv</artifactId>
- <version>1.1</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/MysqL/MysqL-connector-java -->
- <dependency>
- <groupId>MysqL</groupId>
- <artifactId>MysqL-connector-java</artifactId>
- <version>6.0.6</version>
- </dependency>
- <dependency>
- <groupId>commons-dbcp</groupId>
- <artifactId>commons-dbcp</artifactId>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.datatype</groupId>
- <artifactId>jackson-datatype-hibernate5</artifactId>
- </dependency>
- <dependency>
- <groupId>com.javaetmoi.core</groupId>
- <artifactId>javaetmoi-hibernate5-hydrate</artifactId>
- <version>2.3</version>
- </dependency>
- <dependency>
- <groupId>com.google.maps</groupId>
- <artifactId>google-maps-services</artifactId>
- <version>0.1.20</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
如果有更多信息需要,请告诉我.
经过大量的搜索后,我遇到了
Maven War Plugin.这使我能够将必要的前端文件拉到后端,以便成功创建我的WAR文件.需要进行的更改如下:
- <packaging>war</packaging>
- <plugin>
- <artifactId>maven-war-plugin</artifactId>
- <configuration>
- <webResources>
- <resource>
- <directory>../frontend/target/frontend</directory>
- </resource>
- </webResources>
- </configuration>
- </plugin>
除此之外,您可以保持现有的pom.xml与仅后端pom.xml需要包含war包装相同.它最终成为一个相当简单的答案.
还需要在package.json中设置base-href.注意“构建”:
- "scripts": {
- "ng": "ng","start": "ng serve --proxy-config proxy.conf.json","test": "ng test","lint": "ng lint","e2e": "ng e2e","build": "ng build --base-href=\"./\""
- },