当前位置: 首页 > 知识库问答 >
问题:

使用maven进行树外构建。可能吗?

秦安宁
2023-03-14

我开始学习几个发行版的打包(目前是Cygwin和Debian)。

他们需要构建系统以允许树外构建(同义词源代码外构建):

http://wiki.debian.org/UpstreamGuide#Out-of-Tree_构建

要解决“哑”构建系统(例如cygport),建议使用lndir(来自xutils项目):

  lndir ${S} ${B}
  cd {B}
  ...build-commands...

我阅读了mvn(1)手册页,但没有发现任何合适的内容。接下来,我只是尝试:

  $ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  ...
  $ pwd
  /maven/simple
  $ ls 
  my-app
  $ mvn -f my-app/pom.xml compile
  ...
  [INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ my-app ---
  [INFO] Compiling 1 source file to /maven/simple/my-app/target/classes

正如您所看到的,在我寻找避免这种情况的方法时,在源根层次结构中创建了目标目录。

是否可以使用maven进行树外构建?怎么做?

共有2个答案

顾宣
2023-03-14

这可能很简单,就像有一个

<build>
    <directory>/your/build/directory</directory>
</build>

在你的pom里。xml/your/build/directory不需要在源代码树中,可以使用通常的${…}参数化 语法。

干杯

曹鸿风
2023-03-14

您可以这样做,让它在您的当前工作目录:

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.stackoverflow</groupId>
    <artifactId>Q13173063</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>${project.artifactId}-${project.version}</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <buildDir>${user.dir}</buildDir>
    </properties>

    <build>
        <directory>${buildDir}</directory>
    </build>
</project>

然后你可以发布

mvn -f my-app/pom.xml compile

它会给你当前工作目录中的类。

并轻松切换到另一个输出目录:

mvn -f my-app/pom.xml -DbuildDir=/tmp/build compile
 类似资料:
  • 问题内容: 我开始学习一些发行版(目前为Cygwin和Debian)的包装。 他们要求构建系统以允许 树外构建 (同义词 out-of-source build ): http://wiki.debian.org/UpstreamGuide#Out-of- Tree_Builds 要解决“哑”构建系统(例如 cygport), 建议使用 lndir (来自 xutils 项目): 我阅读了 mvn

  • 问题内容: 我对Maven的口头禅还比较陌生,但是我正在尝试使用Maven构建命令行可运行jar。我已经设置了依赖项,但是当我运行并尝试运行jar时,会发生两件事。首先,没有找到可纠正的主类。更正此错误后,在运行时出现错误,指出找不到类。 Maven没有将我的依赖库打包在jar中,因此我无法将jar作为独立应用程序运行。我该如何纠正? 问题答案: 最简单的方法是使用和预定义描述符创建一个程序集。您

  • 问题内容: 我试图使用maven为名为“ logmanager”的小型家庭项目生成可执行jar,如下所示: 如何使用Maven创建具有依赖项的可执行JAR? 我将此处显示的代码段添加到pom.xml中,并运行了mvn assembly:assembly。它在logmanager / target中生成两个jar文件:logmanager-0.1.0.jar和logmanager-0.1.0-jar

  • 我正在尝试建立基于Maven的应用程序的jar文件。所以我不需要将外部jar库包含到我的构建中。我需要我的应用程序在运行时从本地maven存储库或从本地文件夹提供这种外部依赖,这些将包含这些外部库。我为此依赖项配置pom文件,如下所示: 并尝试使用前缀运行这个jar。我正在用这个答案。

  • 我制作了一个Java应用程序,它使用Maven、JavaFX和一些其他依赖项。以前,构建一个可执行jar很容易,但由于Java11是模块化的,不包含JavaFX,所以我无法构建一个工作的jar。 我已经尝试了很多事情,但我不知道我现在应该做什么。 我的pom。xml 我试图构建包含所有依赖项的工件,但在运行(java-jar)时出现了一个错误: 编辑 我曾尝试使用Jlink构建一个包含JavaFX

  • 问题内容: 我正在尝试构建一个依赖于下载的外部jar的可执行jar程序。在我的项目中,我将它们包含在构建路径中,并且可以在eclipse中运行和调试。 当我尝试将其导出到jar中时,我可以运行该程序,但是当我尝试按下包含来自外部jar的函数调用和类的按钮时,则无法执行。我已经编辑了环境变量(Windows XP)CLASSPATH,以包括所有外部jar的路径,但是它不起作用。 需要注意的一点是,我