我开始学习几个发行版的包装(目前是Cygwin和Debian)。
他们需要构建系统以允许树外构建(同义词源外构建):
http://wiki.debian.org/UpstreamGuide#Out-of-Tree_Builds
要解决“哑”构建系统,例如 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构建 out-of-tree ?怎么样?
答案 0 :(得分:6)
您可以这样做,以便在当前的工作目录中获取它:
<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
答案 1 :(得分:3)
可能就像拥有
一样简单<build>
<directory>/your/build/directory</directory>
</build>
pom.xml中的。 /your/build/directory
不必位于源代码树中,可以使用通常的${...}
语法进行参数化。
干杯,