mvn
构建过程的一部分,我确实想下载/安装以NPM软件包发布的JavaScript文件。目前将文件复制到
war/scripts/foobar.js
中,这意味着,如果将Foobar的较新版本发布到NPM,我们将不得不从那里手动下载它并更新我们的代码。
不可能以与Java依赖关系类似的方式集成此依赖性吗?如果您可以为我提供一个这样做的例子,那就太好了。
一种方法是使用npm,涉及在构建过程中合并节点和NPM的下载/运行。其他方法是使用Maven本身,并且不调用任何Nodejs流程。
对于您拥有许多NPM依赖性的大型项目,在开发过程中可能会发生很多变化,因此更容易使用
package.json
<plugins>
<plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>download-babel-js</id>
<phase>initialize</phase>
<goals>
<goal>wget</goal>
</goals>
<configuration>
<url>
https://coporate.nexus.instance/repository/npm-proxy/babel-standalone/-/babel-standalone-6.26.0.tgz
</url>
<unpack>true</unpack>
<outputDirectory>${project.build.directory}/babel</outputDirectory>
<md5>ed714bb8253fc6056902d8d0afd6b106</md5>
</configuration>
</execution>
<execution>
<id>download-redux</id>
<phase>initialize</phase>
<goals>
<goal>wget</goal>
</goals>
<configuration>
<url>https://coporate.nexus.instance/repository/unpkg/[email protected]/dist/redux.min.js</url>
<unpack>false</unpack>
<outputDirectory>${project.build.directory}/${project.build.finalName}/js</outputDirectory>
<md5>8e679dc2c2ea96e12f8189d85485927b</md5>
</configuration>
</execution>
</executions>
</plugin>
为了加香料,您可以使用以下纯Java Maven插件来添加缩小和预处理预处理:
<plugin>
<groupId>com.jarslab.maven</groupId>
<artifactId>babel-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>js-transpile</id>
<phase>process-resources</phase>
<goals>
<goal>babel</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<verbose>true</verbose>
<babelSrc>${project.basedir}/target/babel/package/babel.min.js</babelSrc>
<sourceDir>${project.basedir}/src/main/es6</sourceDir>
<targetDir>${project.build.directory}/js</targetDir>
<jsSourceIncludes>
<jsSourceInclude>*.js</jsSourceInclude>
</jsSourceIncludes>
<presets>es2015</presets>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.blutorange</groupId>
<artifactId>closure-compiler-maven-plugin</artifactId>
<version>2.12.0</version>
<executions>
<execution>
<id>default-minify</id>
<phase>process-resources</phase>
<configuration>
<!-- These are the defaults -->
<encoding>UTF-8</encoding>
<baseSourceDir>${project.build.directory}</baseSourceDir>
<baseTargetDir>${project.build.directory}/${project.build.finalName}</baseTargetDir>
<sourceDir>js</sourceDir>
<targetDir>js</targetDir>
<!-- List of files to process. May use wildcards. -->
<includes>
<include>my-script.js</include>
</includes>
<outputFilename>my-script.min.js</outputFilename>
</configuration>
<goals>
<goal>minify</goal>
</goals>
</execution>
</executions>
</plugin>
在这里,我要感谢Great插件维护者的出色工作!
Mickael
和Othorts从for Google下载插件:
Https://github.com/maven-download-plugin/maven-download-plugin
npm install
以正确的方式获得它。我假设您已经这样做,然后复制资源。
如果是这样,您可以仅使用Maven-Exec-Plugin,然后在编译之前运行命令,例如:<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>npm-install</id>
<phase>generate-sources</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>npm</executable>
<arguments>
<argument>install</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
您可以只使用
https://mvnpm.org/(免费),然后将所需的依赖性放在POM中!