【问题标题】:use maven to pack javascript files in Jar?使用 maven 在 Jar 中打包 javascript 文件?
【发布时间】:2012-07-31 17:13:31
【问题描述】:

我是 Maven 2 的新手,并尝试使用 maven 将一组 javascript(如 Dojo 库)打包到 jar 库中(没有 java 类,但只有扩展名为 .js 的文件)。所以我想我应该试试maven-assembly-plugin,这里有几个问题:

  1. 没有mainClass,但我怎么还有MANIEST.MF?
  2. 如果我不打算更改 jar 中的文件层次结构,是否可以将 jar-with-dependencies 用作 <descriptorRefs>
  3. 可能这是一个愚蠢的问题,但我应该将pom.xml 放在哪里(在 javascript lib 文件夹内或与 javascript lib 文件夹的同一级别)?

请赐教,先谢谢了。

【问题讨论】:

  • 您想要将 JS 文件包含到现有 Java Maven 项目的 JAR-artifact 中,还是想要生成一个只包含 JS 文件的 jar?
  • @Tim 我想将 javascript lib 打包为 jar 文件,而不是将 js 文件包含在现有 jar 文件中。

标签: java maven jar


【解决方案1】:

如果您使用这样的标准 Maven 项目布局:

project
   |-src
   .   |-main
   .      |-resources
   .         |-<JS files here>
   |-pom.xml

然后使用 JAR 打包的普通 POM 文件会将您的 Javascript 文件放入输出 JAR。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.foo.bar</groupId>
  <artifactId>foo</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Foo</name>

</project>

这将保留src/main/resources 下存在的所有文件夹结构。

【讨论】:

  • 感谢您提供详细信息。解决方案的一个问题是 js 文件处于相对复杂的层次结构(如 Dojo 或 jQuery UI)中,所以我们是否需要一一重新分配 assembly.xml 中的路径,或者我们将类路径分配给父文件夹然后全部后代文件夹遵循父类路径?谢谢。
  • 是的,这将处理resources目录下的一系列嵌套文件夹,并将保留JAR中的布局。
  • 组装部分真的有必要吗?我认为有一个简单的“packaging=jar”pom,只需将 *.js 放入 src/main/resources 就可以完成工作,不是吗?
  • @TonyLâmpada 你说的很对!我已经简化了我的回答,谢谢。
  • 如果要放一个不遵循这个层次结构的JS文件怎么办?
【解决方案2】:
  1. mainClass 不是 manifest.mf 中的强制条目,这里是来自典型开源库的最小 manifest.mf 示例

    Manifest-Version: 1.0
    Archiver-Version: Plexus Archiver 
    Created-By: Apache Maven 
    Built-By: hudsonagent 
    Build-Jdk: 1.5.0_15 
    
  2. 我猜这个选项可能会为你改变文件结构,试试看你是否可以使用结果。

  3. 见标准maven项目结构http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

【讨论】:

    【解决方案3】:

    Maven 真的不是适合这个的打包工具。您可能想要使用 NPM 或 YARN,它们是 JavaScript 特定的打包工具。

    https://www.npmjs.com/

    https://yarnpkg.com/lang/en/

    如果你真的想将 JavaScript 代码打包到 Jar 中,可以使用标准目录布局中所示的 src/main/resources 目录:http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

    您还可以修改 Maven 查找资源的位置:https://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html

    Maven 和 Java 支持另一种称为 WAR 的包类型,它旨在将前端代码(HTML、JS、CSS、图像等)与后端 Java 代码一起打包:https://maven.apache.org/plugins/maven-war-plugin/usage.html

    【讨论】:

      猜你喜欢
      • 2017-08-07
      • 2021-05-06
      • 2023-03-27
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 2023-02-12
      相关资源
      最近更新 更多