, Maven bir boolean mantığı uygulamaya sahip değil: İlk özelliğin değerini ters nerede başka özelliği bildirin. Yani bir özelliği bir eklentiye iletmek istemiyorsanız, bunu kendiniz yapmanız gerekir. Biraz sakar, ama Maven'in özellikleri olarak onun içinde tanımlanan bir BeanShell script ve ihracat değişkenleri yazmayı sağlayan build-helper-maven-plugin:bsh-property
golü, kullanabilirsiniz: Sen mülkü geçersiz kılamaz
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<id>negate-prop</id>
<phase>initialize</phase>
<goals>
<goal>bsh-property</goal>
</goals>
<configuration>
<source>dontDoSomething = !${doSomething};</source>
<properties>
<property>dontDoSomething</property>
</properties>
</configuration>
</execution>
</executions>
</plugin>
, ancak bir tanımlayabilir Olumsuzluğun sonucunu içeren yeni bir; Yukarıdaki örnekte, dontDoSomething
. Bu initialize
fazında çalıştırılır, böylece eklentilerin geri kalanı bunu ${dontDoSomething}
standardı ile bir parametre olarak kullanabilir.
doSomething
mevcut değilse, dontDoSomething
için varsayılan bir değere sahip olacak şekilde geliştirilebilir.
<source>
value = project.getProperties().getProperty("doSomething");
dontDoSomething = value == null ? false : !Boolean.parseBoolean(value);
</source>
BeanShell, Java'ya çok benzeyen ve mevcut Java yöntemlerini kullanabileceğiniz bir komut dosyası dilidir. Yukarıda, "doSomething"
numaralı mülk, projenin özelliklerinden alınmıştır (project
, mevcut Maven projesi ile değerlendirme zamanında eklenti tarafından enjekte edilir); Tanımlanmadı, false
döndürüyoruz, aksi takdirde değeri reddediyoruz.
doSomething
özel bir sistem özelliği ise, aynı zamanda, (ab) mümkün olabilir profil etkinleştirme özelliği kullanmak ve 2 profil vardır: biri bir özellik ile aktive ikinci true
olmak ve false
başka ayar ve tersini yapıyor profile: doSomething
örneğin <properties>
etiketinde belirlenen bir Maven özelliği ise
<profiles>
<profile>
<id>pro-1</id>
<activation>
<property>
<name>doSomething</name>
<value>!false</value>
</property>
</activation>
<properties>
<dontDoSomething>false</dontDoSomething>
</properties>
</profile>
<profile>
<id>pro-2</id>
<activation>
<property>
<name>doSomething</name>
<value>false</value>
</property>
</activation>
<properties>
<dontDoSomething>true</dontDoSomething>
</properties>
</profile>
</profiles>
Bu işe yaramaz. mvn -DdoSomething=true|false
ile bir sistem özelliği olarak geçirilmesi gerekecek. Karşılık gelen profil, dontDoSomething
özelliğini tersine tanımlayacak olan sistem özelliğinin değerine göre etkinleştirilecektir. Özellik tanımlanmadıysa etkin olacak, dontDoSomething
ayarı false
varsayılan değerine ayarlanacaktır. Bunların hepsi çirkin olsa da ...
doSomething ile ilgili atlamak için kullandığınız geçerli komutu paylaşırdınız. – nullpointer
@nullpointer Bu bir özel eklentidir. Https: // github adresinden "$ {download.cmake}" konusuna bakın.com/cmake-maven-proje/cmake-maven-proje. Kullanıcılar bu özelliği false olarak ayarlarsa, indirme işlemlerini atlamak istiyorum, ancak eklenti aslında bu değerin negatif değerini giriş olarak alıyor ('' parametresi). –
Gili
Lütfen geçerli pom.xml'in eklenti bağlamı ve şu anda izlediğiniz yürütme yöntemiyle ilgili ayrıntıları ekleyin. Sağlanan bağlantıda "$ {download.cmake}" göremiyorum. – nullpointer