मैं अपने कोणीय 2 + स्प्रिंग बूट एप्लिकेशन में मेवेन के साथ टाइपस्क्रिप्ट .ts फ़ाइलों का उपयोग कर रहा हूं। मैं एनपीएम चलाता हूं निर्भरताओं और एनपीएम रन टीएससी को .ts फ़ाइलों को .js में exec-maven-plugin द्वारा कनवर्ट करने के लिए चलाएं।
नीचे मेरे pom.xml से प्लगइन भाग है। अपने आवेदन, pacakge.json, tsconfig.json और typings.json सभी के तहत src/मुख्य/संसाधनों पथ, तो पथ के अंतर्गत NPM कार्य चलाने
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
</parent>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>exec-npm-install</id>
<phase>generate-sources</phase>
<configuration>
<workingDirectory>${project.basedir}/src/main/resources</workingDirectory>
<executable>npm</executable>
<arguments>
<argument>install</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
<execution>
<id>exec-npm-run-tsc</id>
<phase>generate-sources</phase>
<configuration>
<workingDirectory>${project.basedir}/src/main/resources</workingDirectory>
<executable>npm</executable>
<arguments>
<argument>run</argument>
<argument>tsc</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
में मेरे Angular2 + स्प्रिंग बूट आवेदन फ़ोल्डर संरचना की तरह नीचे
src/main/resources
/app - .ts and converted .js
/css
/images
/js - systemjs.config.js is also placed here
/node_modules - generated by npm install and will include in war
/typings
application.properties
package.json
tsconfig.json
typings.json
src/main/webapp
/WEB-INF
/jsp - all .jsp files
.jsp फ़ाइल सिर अनुभाग पर, systemjs.config.js शामिल है
<script type="text/javascript" src="webjars/zone.js/0.6.12/dist/zone.js"></script>
<script type="text/javascript" src="webjars/reflect-metadata/0.1.3/Reflect.js"></script>
<script type="text/javascript" src="webjars/systemjs/0.19.27/dist/system.js"></script>
<script type="text/javascript" src="js/systemjs.config.js"></script>
इसके अलावा यहां मानचित्रण पथ के लिए मेरी WebMvcConfigurerAdapter कोड है
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.my.controller")
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!registry.hasMappingForPattern("/webjars/**")) {
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
if (!registry.hasMappingForPattern("/images/**")) {
registry.addResourceHandler("/images/**").addResourceLocations("classpath:/images/");
}
if (!registry.hasMappingForPattern("/css/**")) {
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/css/");
}
if (!registry.hasMappingForPattern("/js/**")) {
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/js/");
}
if (!registry.hasMappingForPattern("/app/**")) {
registry.addResourceHandler("/app/**").addResourceLocations("classpath:/app/");
}
if (!registry.hasMappingForPattern("/node_modules/**")) {
registry.addResourceHandler("/node_modules/**").addResourceLocations("classpath:/node_modules/");
}
}
@Bean
public InternalResourceViewResolver internalViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
viewResolver.setOrder(1);
return viewResolver;
}
}
एक बात मैं उल्लेख करना चाहते हैं वहाँ ग्रहण पर कार्यकारी-Maven-प्लगइन चल रहा है, तो ओएस विंडोज या मैक है पर कुछ हैक है । लिनक्स (उबंटू) बिल्कुल कोई मुद्दा नहीं दिखता है। जब विंडोज या मैक पर ग्रहण से निर्माण चलाते हैं, तो समस्या यह है कि यह एनपीएम कमांड को समझ में नहीं आता है और ऐसी फ़ाइल को खोजने का प्रयास करें, भले ही मेवेन बिल्ड टर्मिनल या कमांड विंडो पर पूरी तरह ठीक हो।
इस तरह के मुद्दे को हल करने के लिए, मैंने कुछ चिमटा किया। मैक के लिए, /usr/bin पथ के नीचे नोड और एनपीएम के लिए प्रतीकात्मक लिंक बना रहा है। हालांकि संशोधित /usr/bin अनुमति नहीं है, इसलिए मैं वसूली डिस्क
lrwxr-xr-x 1 root wheel 17 May 22 03:01 node -> ../local/bin/node
lrwxr-xr-x 1 root wheel 44 May 22 02:50 npm -> ../local/lib/node_modules/npm/bin/npm-cli.js
द्वारा रिबूट Windows के लिए के बाद, मैं की तरह सिस्टम पथ के तहत node.bat और npm.bat फ़ाइल बनाया नीचे यह करने के बाद किया , Maven दोनों विंडोज पर ग्रहण और कमांड विंडो से पूरी तरह से ठीक 10.
@echo off
set arg1=%1
set arg2=%2
set arg3=%3
set arg4=%4
C:\Progra~1\nodejs\npm.cmd %arg1% %arg2% %arg3% %arg4%
टाइपप्रति संकलक (npm.bat निर्माण tsc) .js और मानचित्र फ़ाइलों को उत्पन्न करता है, नोड.जे.एस. नहीं। एक बार जब आपका जेएस, सीएसएस, एचटीएमएल, आदि हो तो आप उन्हें किसी अन्य वेबसाइट की तरह ही सेवा देते हैं। आपके इनपुट के लिए – rgvassar