Maven Jar需要两个执行上下文

时间:2014-12-19 12:47:21

标签: maven onejar

我需要能够允许我的maven包在两种情况下执行。

  1. 用户需要从命令行执行jar,以便在用户执行java -jar myjar.jar

  2. 时出现的AWT对话框中生成许可证密钥
  3. 当客户端项目将myjar作为依赖项引用时,myjar还需要下载所有传递依赖项(以"普通" maven方式)。

  4. 场景1要求打包AWT表格jar,以便弹出AWT对话框 场景2要求在客户端项目构建时下载所有其他依赖项。

    如何打包以保持尽可能小?

    我已经独立尝试了jar-plugin,shade-plugin和assembly-plugin而没有太多运气。

    JAR-插件:
    将forms-1.2.1.jar放在lib /目录中并将其添加到类路径中是行不通的,因为java -jar myjar.jar不会在命令行加载它

    SHADE-插件:
    下载互联网。如何排除某些依赖项?

    ASSEMBLY-插件:
    下载互联网。如何排除某些依赖项?

    是否有办法打包forms-1.2.1.jar的传递依赖项(针对方案1),但在打包时排除所有其他依赖项,以便在客户端项目构建时下载(针对方案2)。

    jar-plugin或assembly-plugin可以这样做吗?

1 个答案:

答案 0 :(得分:0)

您的想法about the following:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <!-- NOTE: We don't need a groupId specification because the group is
             org.apache.maven.plugins ...which is assumed by default.
         -->
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.5.2</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        [...]
</project>

这将生成一个包含所有依赖项的jar文件,并且可以从命令行调用它,但为了使其正常工作,您需要一个补充部分:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.5.2</version>
        <configuration>
          [...]
          <archive>
            <manifest>
              <mainClass>org.sample.App</mainClass>
            </manifest>
          </archive>
        </configuration>
        [...]
      </plugin>
      [...]
</project>