5

いくつかのディストリビューション (現在は Cygwin と Debian) のパッケージ化について学び始めました。

ツリー外ビルド(同義語out-of-source build )を許可するシステムを構築する必要があります。

http://wiki.debian.org/UpstreamGuide#Out-of-Tree_Builds

たとえばcygportなどの「ダム」ビルド システムを回避するには、 lndir ( xutilsプロジェクトから)を使用することをお勧めします。

  内線 ${S} ${B}
  CD{B}
  ...ビルドコマンド...

mvn(1)の man ページを読みましたが、適切なものは見つかりませんでした。次に私は試してみます:

  $ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  ...
  $ pwd
  /maven/シンプル
  $ ls
  マイアプリ
  $ mvn -f my-app/pom.xml コンパイル
  ...
  [INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ my-app ---
  [情報] 1 つのソース ファイルを /maven/simple/my-app/target/classes にコンパイルしています

これを回避する方法を探している間に、ソース ルート階層にターゲットディレクトリが作成されていることがわかります。

Mavenでツリー外ビルドは可能ですか? そしてどうやって?

4

2 に答える 2

7

次のようにして、現在の作業ディレクトリに取得できます。

<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
于 2012-11-01T08:22:23.383 に答える
3

それは持っているのと同じくらい簡単かもしれません

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

あなたのpom.xmlで。/your/build/directoryソース ツリーにある必要はなく、通常の${...}構文を使用してパラメーター化できます。

乾杯、

于 2012-11-01T08:01:56.583 に答える