idea 到myeclipse


在上一篇博客使用maven進行開發過程管理之准備篇中提到了maven的基本概念。IT男羅書全覺得概念我是懂了,但是那些東西似乎離我很遠啊。先開發再說吧,

   於是IT男羅書全就在svn上取了源代碼,並開始導入到本地開發環境中去。三下五除二,點擊import,出現熟悉的導入界面。DU9Q7CTG{6L(($4_1(GC~AD

 

      導入失敗,這是怎么回事?問了同事才知道,公司使用的是idea開發環境,而自己用的是eclipse.怎么辦呢?放棄自己心愛的eclipse,真痛苦,而且不熟悉會導致開發效率較低。有沒有兩全其美的辦法呢?有的。image

 

 

       想想大家做數據訪問層時,hibernate是怎么實現兼容不同數據庫的呢?創立中間的一種語言,比如hql,在配置里得知連接的數據庫具體類型時,調用其適配功能實現hql-->相應數據庫sql的轉換。Maven的原理也是類似,提供了pom描述文件來對項目的組成要素做了說明,如src,target,lib等的位置,在命令中得知需要適配哪個開發環境中時,就可以轉換過去。這樣就給具體開發提供了一定的靈活性。在maven中提供了轉換到主流環境eclipse的插件maven-eclipse-plugin,相應轉換命令是eclipse:eclipse.對於IDEA也提供了轉換到IDEA的插件maven-idea-plugin,轉換到相應開發環境的命令是idea:idea.

 

      IT男羅書全在命令行中進入項目所在根目錄下,運行mvn eclipse:eclipse,然后導入,成功了。IT男羅書全欣喜萬分,在欣喜萬分的同時,又疑惑了,maven是怎么做的轉換的呢?

 

       

 

image其實任何開發環境都是要識別項目特性,才能順利進行開發的。比如在eclipse項目里面,可以看到有幾個基本要素,如像src/main/java文件夾上有個包的,就是源代碼目錄,源代碼目錄就是放置用戶編寫源代碼的位置。像target目錄,就是生成目標文件的地方,如class文件等。Referenced Libraries就是放置項目依賴的jar包的地方等。

 

 

 

這些項目描述都是在.classpath和.project中說明的。例如.classpath文件:

QQ截圖20111019093401

 

 

顯然的,可以得出以下幾個結論:

  1.   kind="src",path=src/main/java,里面說明了src的位置;    
  2.   kind="output”,path=target/classes,說明了target目錄的位置;
  3.   kind=“var”,說明的是一個lib的位置。

.project文件中說明了此項目需要的插件,以及使用的builder.

  那么maven又是怎么做的呢?其實他也是分析了所有開發環境的共性,而對其概念作了抽象。在下面的代碼中說明:

org.apache.maven.plugin.ide.AbstractIdeSupportMojo.java

   1:        boolean processProject = setup();
   2:        if ( !processProject )
   3:        {
   4:            return;
   5:        }
   6:        // 解析得到所有的依賴,形成lib引用
   7:        IdeDependency[] deps = doDependencyResolution();
   8:        //綁定source代碼和javadoc
   9:        resolveSourceAndJavadocArtifacts( deps );
  10:        //生成特定開發環境的配置文件
  11:        writeConfiguration( deps );
  12:        reportMissingArtifacts();

 

這是個template模式的實現,具體的開發環境只要繼承AbstractIdeSupportMojo來override其中的writeConfiguration(deps)來生成具體的配置文件。

    因此,maven 對開發環境與源代碼的隔離提供了強有力的插件支持,兼顧了不同程序員的愛好,從而提高了整體的開發效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM