如何仅为包装jar指定outputDirectory?
http://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html这显示了所有参数,但是如何在命令行或pom.xml中设置它们?
lwe*_*ler 65
在命令行上
-DoutputDirectory=<path>
Run Code Online (Sandbox Code Playgroud)
并在pom.xml中
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<outputDirectory>/my/path</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
Sea*_*oyd 45
关于命令行用法:
参数文档指定将参数初始化为属性的值${project.build.directory}
(这是指向目标文件夹的属性)
这是这意味着什么:
对于旨在直接从CLI执行的mojos,它们的参数通常提供通过系统属性而不是
<configuration/>
POM 中的部分进行配置的方法.这些参数的插件文档将列出表示配置的系统属性的表达式.在上面的mojo中,参数url与表达式相关联${query.url}
,这意味着它的值可以由系统属性指定,query.url
如下所示:
mvn myquery:query -Dquery.url=http://maven.apache.org
Run Code Online (Sandbox Code Playgroud)
参考:
然而,${project.build.directory}
是不是一个系统属性,它是一个属性的的项目的Build
对象.
您不能直接在命令行上设置maven的内部属性,但是您可以通过在pom.xml中添加占位符来实现一些小技巧:
<build>
<directory>${dir}</directory>
</build>
Run Code Online (Sandbox Code Playgroud)
现在,输出目录通过命令行中的属性设置(使用-Ddir=somedirectory
).缺点:现在您必须-Ddir
在命令行中使用该参数.
但是这里也有帮助.只需在配置目录时使用配置文件:
<profiles>
<profile>
<id>conf</id>
<build>
<directory>${dir}</directory>
</build>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
现在你可以做到
# everything goes in someOtherDir instead of target
mvn clean install -Pconf -Ddir=someOtherDir
Run Code Online (Sandbox Code Playgroud)
或者说老了
# everything goes in target
mvn clean install
Run Code Online (Sandbox Code Playgroud)
现在,如果您只想从命令行更改jar outputDirectory而不重定向目标中的所有内容,我们将修改配置文件以从命令行属性配置插件:
<profiles>
<profile>
<id>conf</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<outputDirectory>${dir}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
用法与上述相同:
# everything goes in someOtherDir instead of target
mvn clean install -Pconf -Ddir=someOtherDir
Run Code Online (Sandbox Code Playgroud)
小智 5
感谢@Sean Patrick Floyd 的出色解释。
我不想创建配置文件并mvn
始终通过-P
switch使用,而是想使用另一种方式来设置属性 ${dir} 的默认值。
只需将${dir}
的默认值定义为${project.build.directory}
<properties>
<dir>${project.build.directory}</dir>
</properties>
Run Code Online (Sandbox Code Playgroud)
和@Sean Patrick Floyd 一样,设置 outputDirectory。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<outputDirectory>${dir}</outputDirectory>
</configuration>
</plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)
现在你可以做
# everything goes in someOtherDir instead of target
mvn clean install -Ddir=someOtherDir
Run Code Online (Sandbox Code Playgroud)
或简单的旧
# everything goes in target
mvn clean install
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
79016 次 |
最近记录: |