2013-04-03 20 views
6

Maven 3.0.3 kullanıyorum. Maven profil aktivasyonunda "activeByDefault" bayrağı hakkında kafam karıştı. İstediğim şey varsayılan bir profile sahip olmaktır, ancak birisi başka bir profil belirtirse (ör. -P başka bir profil), varsayılan profilin yapısındaki eklentilerin hiçbiri çalışmaz. çalışacağı varsayılan profilindenMaven varsayılan profilimde eklentileri nasıl çalıştırırım, ancak başka bir profil belirtilirse bu eklentilerin çalışmasını engelleyebilir miyim?

mvn clean install 

eklentileri, ancak diğer profillerde eklentileri yayınlanmaması: Ve, birisi belirtiyorsa. Ancak, komut satırında farklı bir profil ("-P diğer" aracılığıyla) belirtsem bile, varsayılan profildeki eklentiler her zaman çalışır. Burada başka bir profilin , belirtilen ancak diğer profil aynı POM belirtilen olmasıdır eğer

<profiles> 
    <profile> 
     <id>dev</id> 
     <activation> 
      <activeByDefault>true</activeByDefault>   
     </activation> 
     <build> 
      <plugins> 
       <!-- Prepare liquibase scripts to run against the test db. --> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <version>1.7</version> 
        <dependencies> 
         <dependency> 
          <groupId>org.mainco.subco</groupId> 
          <artifactId>database</artifactId> 
          <version>${project.version}</version> 
         </dependency> 
        </dependencies> 
        <executions> 
         <execution> 
          <id>unzip-liquibase-archive</id> 
          <phase>process-test-resources</phase> 
          <configuration> 
           <target> 
            <echo message="unzipping liquibase archive" /> 
            <unzip 
             src="${user.home}/.m2/repository/org/mainco/subco/database/${project.version}/database-${project.version}.jar" 
             dest="${project.build.directory}" /> 
           </target> 
          </configuration> 
          <goals> 
           <goal>run</goal> 
          </goals> 
         </execution> 
         <!-- Replace relative references in liquibase file with absolute ones. --> 
         <execution> 
          <id>format-liquibase-files</id> 
          <phase>process-test-resources</phase> 
          <configuration> 
           <target> 
            <replace token='include file="' 
             value="include file=&quot;${project.build.directory}/" file="target/db.changelog-master.xml" /> 
           </target> 
          </configuration> 
          <goals> 
           <goal>run</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 

       <!-- Run the liquibase scripts --> 
       <plugin> 
        <groupId>org.liquibase</groupId> 
        <artifactId>liquibase-maven-plugin</artifactId> 
        <version>2.0.1</version> 
        <dependencies> 
         <dependency> 
          <groupId>mysql</groupId> 
          <artifactId>mysql-connector-java</artifactId> 
          <version>5.1.18</version> 
         </dependency> 
        </dependencies> 
        <executions> 
         <execution> 
          <id>build-database</id> 
          <phase>process-test-resources</phase> 
          <configuration> 
           <driver>com.mysql.jdbc.Driver</driver> 
           <url>jdbc:mysql://${test.mysql.db.host}:${test.mysql.db.port}/${test.mysql.db.sid}</url> 
           <username>${test.mysql.db.user}</username> 
           <password>${test.mysql.db.password}</password> 
           <changeLogFile>${project.build.directory}/db.changelog-master.xml</changeLogFile> 
           <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase> 
          </configuration> 
          <goals> 
           <goal>update</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin>     
      </plugins> 
     </build> 
    </profile> 
    ... 
</profiles> 

cevap

4

Varsayılan profil devre dışı ne var. Eğer bir pom içinde (varsayılan olarak etkin) yalnızca bir profiliniz varsa

Yani, -P kullanmadıkça, devre dışı bırakmak için mümkün olmayacaktır! xxx

bir çözüm profilleri sağlamak olduğunu Bu devre dışı bırakılması gereken her zaman, bu profiller bazı POM'lar için boş olsa bile dev profilini tanımlayan POM'lerde bulunur.

+1

garip, maven ile cmd.exe ile çalışmak gibi hissediyorum, herhangi bir tutarlılık ya da sağduyu için umarım bir şey yapamazsınız: – akostadinov