Как я могу указать outputDirectory только для упаковки jar?
http://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html показывает все параметры, но как их установить в командной строке или pom.xml?
Как я могу указать outputDirectory только для упаковки jar?
http://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html показывает все параметры, но как их установить в командной строке или pom.xml?
в командной строке
-DoutputDirectory=<path>
и в 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>
О использовании командной строки:
Документация параметров указывает, что параметр инициализирован значением свойства ${project.build.directory}
(который является свойством, относящимся к целевой папке )
Здесь это означает:
Для моджо, которые должны быть выполняются непосредственно из CLI, их параметры обычно обеспечивают настраиваться с помощью свойств системы вместо раздела
<configuration/>
в ПОМ. Документация плагина для этих параметров будет выражение, которое обозначает систему свойства для конфигурации. В mojo выше, параметр url равен связанных с выражением${query.url}
, то есть его значение может быть заданный системным свойствомquery.url
, как показано ниже:
mvn myquery:query -Dquery.url=http://maven.apache.org
Справка:
Однако ${project.build.directory}
не является системным свойством, это свойство Project Build
объект.
Вы не можете установить внутренние свойства maven непосредственно в командной строке, но вы можете попасть туда с небольшим трюком, добавив в свой pom.xml заполнители:
<build>
<directory>${dir}</directory>
</build>
Теперь выходной каталог устанавливается через свойство из командной строки (используя -Ddir=somedirectory
). Downside: теперь вам всегда нужно использовать параметр -Ddir
в командной строке.
Но здесь тоже помогите. Просто используйте профиль, если вы хотите настроить каталог:
<profiles>
<profile>
<id>conf</id>
<build>
<directory>${dir}</directory>
</build>
</profile>
</profiles>
Теперь вы можете сделать
# everything goes in someOtherDir instead of target
mvn clean install -Pconf -Ddir=someOtherDir
или простой старый
# everything goes in target
mvn clean install
Теперь, если вы просто хотите изменить 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>
Использование идентично выше:
# everything goes in someOtherDir instead of target
mvn clean install -Pconf -Ddir=someOtherDir
Спасибо @Sean Patrick Floyd за отличное объяснение.
Вместо создания профиля и использования mvn
всегда с -P
переключателя -P
, я хотел бы использовать другой способ, который делает значение по умолчанию для свойства $ {dir}.
Просто определите значение по умолчанию ${dir}
как ${project.build.directory}
<properties>
<dir>${project.build.directory}</dir>
</properties>
и так же, как @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>
Теперь вы можете сделать
# everything goes in someOtherDir instead of target
mvn clean install -Ddir=someOtherDir
или старый
# everything goes in target
mvn clean install