2013-02-04 45 views
14

按重要性遞減順序排列的三個問題 - 鏈接將會執行。如何從插件中讀取.m2/settings.xml文件中的maven設置

  1. 我需要閱讀某些行家設置,如代理,服務器在我的Maven插件。我如何從我的插件中讀取它們。我可以從.m2/settings.xml文件讀取,但我認爲必須有一個更簡單的方法(一些API已經做到了)。

  2. 我看到從developers cookbook有一個類

    org.apache.maven.project.MavenProject
    我需要什麼依賴我可以在我的插件 - 我覺得這將是一件好事。

  3. 是否有可能有自己的特性在

    settings.xml
    比方說

    <users>
    <user>
    <username>user_name1</username>
    <password>encrypted_password</password>
    </user>
    </users>

    如何?

PS:我是初學者。

更新1

我能夠創建和以下Injecting POM Properties via Settings.xml閱讀自定義屬性。不過,我希望具有類似cargo所提供的配置。例如。

<servers> 
     <server> 
      <id>tomcat7_local</id> 
      <configuration> 
       <cargo.hostname>localhost</cargo.hostname> 
       <cargo.remote.uri>http://localhost:8080/manager/text</cargo.remote.uri> 
       <cargo.remote.username>my_username</cargo.remote.username> 
       <cargo.remote.password>my_password</cargo.remote.password> 
       <cargo.servlet.port>8080</cargo.servlet.port> 
      </configuration> 
     </server> 
     <server> 
      <id>tomcat6_local</id> 
      <configuration> 
       <cargo.hostname>localhost</cargo.hostname> 
       <cargo.remote.uri>http://localhost:8080/manager</cargo.remote.uri> 
       <cargo.remote.username>my_username</cargo.remote.username> 
       <cargo.remote.password>my_password</cargo.remote.password> 
       <cargo.servlet.port>8080</cargo.servlet.port> 
      </configuration> 
     </server> 
    </servers> 

我該如何做到這一點。對我的第三個問題有一種解決方法,不確定它是否正確。

編輯

感謝Jordan002!我知道我可以有多個配置文件,但我不知道要使用它們。這樣,通過使輪廓來設置我的變量的值,或者更確切地說,就像這樣,

@Parameter(alias = "cargo.hostname") 
private String hostname;
注入在我的插件的價值,但我看到,貨物插件它所需要的是同樣的定義如下圖所示

<servers> 
    <server> 
    <id>someId</id> 
    <configuration> 
    <!-- Configurations are placed here --> 
    </configuration> 
</servers> 

,或者可能不如此的相似,因爲沒有配置這裏

<proxies> 
    <proxy> 
    <active>true</active> 
    <protocol>http</protocol> 
    <host>My_proxy_host</host> 
    <port>My_proxy_port</port> 
    </proxy> 
</proxies> 

是在那裏我可以把那Maven使用代理信息。現在,我不想在配置文件中重新定義它,我不想解析此文件以獲取信息。

此外,我想做一些像貨物一樣的事情。它讓我寫內部服務器和項目的POM所有的配置我只需要做以下

<plugin> 
    <groupId>org.codehaus.cargo</groupId> 
    <artifactId>cargo-maven2-plugin</artifactId> 
    <configuration> 
     <container> 
      <containerId>tomcat7x</containerId> 
      <type>remote</type> 
     </container> 
     <configuration> 
      <type>runtime</type> 
      <properties> 
       <cargo.server.settings>tomcat7_local</cargo.server.settings> 
      </properties> 
     </configuration> 
     <deployer> 
      <type>remote</type> 
     </deployer> 
     <deployables> 
      <deployable> 
       <groupId>${project.groupId}</groupId> 
       <artifactId>${project.artifactId}</artifactId> 
       <type>war</type> 
       <properties> 
        <context>${project.artifactId}</context> 
       </properties> 
      </deployable> 
     </deployables> 
    </configuration> 
</plugin> 

和貨物拾起,我爲定義tomcat7_local配置(S),沒必要寫一個簡介爲了這。

回答

1

我對Cargo插件不太熟悉,但是從文檔來看,它似乎可以像任何其他Maven插件一樣進行配置。我想從你的「更新1」改變是使tomcat6中和tomcat7概況:

<profiles> 
    <profile> 
     <id>tomcat6_local</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <properties> 
      <cargo.hostname>localhost</cargo.hostname> 
      <cargo.remote.uri>http://localhost:8080/manager/text</cargo.remote.uri> 
      <cargo.remote.username>my_username</cargo.remote.username> 
      <cargo.remote.password>my_password</cargo.remote.password> 
      <cargo.servlet.port>8080</cargo.servlet.port> 
     </properties> 
    </profile> 
    <profile> 
     <id>tomcat7_local</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <properties> 
      <cargo.hostname>localhost</cargo.hostname> 
      <cargo.remote.uri>http://localhost:8080/manager</cargo.remote.uri> 
      <cargo.remote.username>my_username</cargo.remote.username> 
      <cargo.remote.password>my_password</cargo.remote.password> 
      <cargo.servlet.port>8080</cargo.servlet.port> 
     </properties> 
    </profile> 
</profiles> 

,並在運行時說明您想通過傳遞適當的配置文件來啓動/停止是Tomcat:

mvn install -P tomcat6_local 

希望這有助於。

相關問題