【问题标题】:maven create jar with pommaven 用 pom 创建 jar
【发布时间】:2014-03-06 16:09:23
【问题描述】:

我正在开发一个 Android 项目,并且有一些核心代码(具有一些依赖项),我想对其进行版本控制并制作成一个库/工件(?),我可以将其拉入其他项目。我正在使用 Maven 构建,我的编辑器是 IntelliJ。我从未创建过 .jar,但我认为这就是我想要做的。

在 IntelliJ 中,我已转到 文件->项目结构->工件->+但我迷路了。我不知道如何定义要包含在 jar 中的源目录和文件,我不确定是否需要在 jar 中包含其依赖项的实际 jar?或者在 pom.xml 文件中定义这些依赖项并将 pom.xml 文件包含在 jar 中?

任何澄清将不胜感激。

【问题讨论】:

    标签: java android maven


    【解决方案1】:

    Maven 项目的依赖项在其 pom.xml 文件中定义(基本上,从这里更改依赖项是您使用 Intellij 在视觉上所做的事情,通过 File->Project Structure->Artifacts )。 Maven 使用的源文件位于项目的 src/main 目录中。默认情况下,构建是在不包括依赖项的情况下完成的,所以如果你想在你的最终 jar 中使用to include them,你必须在你的 pom 文件(插件)中指定它:

      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>attached</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    

    之后你必须执行 mvn install 命令来创建你的 jar。您可以在外部或从 IDE(如果您安装了 some Maven plugin)运行 maven,并且 jar 将在项目的 target 文件夹中创建。

    【讨论】:

    • 你能让Maven只查看src/main目录中的某些目录/文件吗?我想要在 jar 中的文件包含在 Android 应用程序中。我不想将整个 Android 应用程序放在 jar 中,只是某些文件。
    • 我想您正在维护一个 Android 项目的布局。为什么你应该只放某些文件?假设您放在该目录中的所有内容都是有用的。如果没有,则说明位置不正确。
    • 配置可以修改为include/exclude a certain package structure 例如。 ... **/include/*.java ...
    • @XtremeBiker 所以为 android 开发库的正确方法是将整个 android 应用程序打包到一个 jar 中?这似乎不对
    • 这是用 maven 创建 jar 的正确方法,据我所知,在 android 中你准备的是 apk,而不是 jar ..
    【解决方案2】:

    IntelliJ IDEA 中的设置只会在您使用 IntelliJ IDEA 编译器构建时创建 JAR。要让 maven 创建 JAR 并将其部署到 maven 存储库,您需要使用 maven assembly plugin。有一个 predefined configuration 用于创建具有依赖关系的 jar。

    Maven Shade Plugin 还可以创建 JAR 并处理更高级的用例。但是您可能希望从程序集插件开始/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多