如何配置MVN下载NPM依赖性?

问题描述 投票:0回答:2

mvn

构建过程的一部分,我确实想下载/安装以NPM软件包发布的JavaScript文件。

目前将文件复制到

war/scripts/foobar.js

中,这意味着,如果将Foobar的较新版本发布到NPM,我们将不得不从那里手动下载它并更新我们的代码。

不可能以与Java依赖关系类似的方式集成此依赖性吗?

如果您可以为我提供一个这样做的例子,那就太好了。

一种方法是使用npm,涉及在构建过程中合并节点和NPM的下载/运行。其他方法是使用Maven本身,并且不调用任何Nodejs流程。

对于您拥有许多NPM依赖性的大型项目,在开发过程中可能会发生很多变化,因此更容易使用

package.json
maven npm dependency-management
2个回答
2
投票
对于您只需要文件需要的较小项目,我更喜欢使用简单的Maven插件设置,例如:

<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

  1. Milosz用于Babel-Maven-Plugin:Https://github.com/jarslab/babel-maven-plugin
  2. andre
  3. 用于闭合 - 补偿器-maven-plugin:https://github.com/blutorange/clusure-compiler-maven-plugin
  4. 通过NPM资源,您可能会使用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>

1
投票

您可以只使用

https://mvnpm.org/
(免费),然后将所需的依赖性放在POM中!

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.