Time of Update: 2018-12-04
好,現在建立另一個Maven項目來使用第二篇建立的plugin.注意還是通過私服擷取。pom.xml配置如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
Time of Update: 2018-12-04
前面三節已經能夠開發並使用一個簡單的Maven plugin。本節停留一下,梳理一下基本概念。1.用嚮導建立mvn archetype:create -DgroupId=com.freebird -DartifactId=plugin-example1 -DarchetypeArtifactId=maven-archetype-mojo 當然,懂得手動建立的原理仍然很重要。不要被便捷的工具屏蔽了底層的實現。2.Mojo一個Maven
Time of Update: 2018-12-04
現在我來開發一個report plugin,我希望我的report plugin輸出的hello world能夠被整合到mvn site產生的網站中。1.用嚮導建立一個report plugin工程:mvn archetype:create -DgroupId=org.freebird -DartifactId=myreport -DarchetypeArtifactId=maven-archetype-mojo2.在自動產生的類MyMojo類的javadoc
Time of Update: 2018-12-04
互連網上有篇文章:http://docs.codehaus.org/display/MAVENUSER/Write+your+own+report+plugin講了一些基本的操作,但是舉的例子對於熟悉report-plugin開發的人來說的確簡單,而對於不熟悉的人來講,有點複雜。所以例子並不好。我前一篇文章雖然很簡陋,但是例子夠簡單,容易看懂。現在用另一個maven程式使用這個plugin。pom.xml中如下使用: <build> <plugins>
Time of Update: 2018-12-04
現在你會看到我寫這系列文章的真正目的。jslint是一個Javascript檢查工具,jslint4java是一個Java開發人員提供的Java項目中很方便使用jslint來檢查JavaScript代碼的工具。該開發人員還提供了jslint4java plugin用於maven項目。現在簡單介紹一下如何使用這個外掛程式:在你的Java web的maven項目中,pom.xml中添加如下配置:
Time of Update: 2018-12-04
為了使用前一節建立的jslint4java-report plugin,在我的Java web工程的pom.xml中添加如下配置:<groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><version>3.0</version><configuration>
Time of Update: 2018-12-04
以前曾經用過一陣子maven-glassfish-plugin,後來有一陣子突然不能訪問公用倉庫(GFW乾的),導致放棄了這種用法。現在依賴公司Nexus私服,又嘗試了一次。首先添加如下配置到pom.xml中 <!-- This plugin is only used for developer to deploy war on local glassfish--> <plugin><groupId>org.glassfish.maven.
Time of Update: 2018-12-04
需求是:1.在本地開發的時候,war包部署在本地glassfish上的時候contextroot是dev-geoflow2.在持續整合的時候,war包部署在伺服器上的glassfish的時候,contextroot是geoflow3.預設情況下,使用2首先配置一個用於本地開發的profile <profiles> <profile> <id>dev</id>
Time of Update: 2018-12-04
突然碰到一個需求,將現在的一套代碼放在遠程伺服器上,能夠編譯,打包,部署並且調試。因為遠程伺服器不能使用公司私服,因此,只有把編譯出來的jar包部署到本地倉庫。這個很簡單,從依賴鏈的最底層庫開始編譯並且執行mvn install。一個小問題是 當一些庫被用parent pom組織在一起的時候,parent pom也要被手動安裝到本地倉庫中。在parent pom檔案所在的目錄下執行命令:mvn -N install
Time of Update: 2018-12-04
我們使用了父項目的pom.xml用來管理所有的子項目的共同依賴和外掛程式,父項目自己沒有代碼。大概擁有7個子項目,都是maven的。所有在Jenkins上打包出來的子項目的jar包都會被自動部署到Nexus伺服器上。今天當版本從0.0.1-SNAPSHOT升級到1.0.0-SNAPSHOT的時候,發現一些問題。首先A子項目被部署到nexus上,然後B子項目編譯報錯,原因是在nexus上找不到父項目的pom.xml. 原來如此,必須在jenkins上建一個父項目的build
Time of Update: 2018-12-04
在調試同時存在Managed 程式碼和Unmanaged 程式碼的程式的時候,需要特別注意選用適當的調試器的類型。因為看到類似的問題問得比較多,因此這裡把做法寫出來。在託管項目中在調試之前,需要開啟對Unmanaged 程式碼調試的功能,這個選項在項目的屬性的Debug選項中存在:coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"filled="f"
Time of Update: 2018-12-04
這其實已經不是新聞了但是我還是覺得應該提一下。Shared Source CLI
Time of Update: 2018-12-04
對.NET中COM Interop比較熟悉的朋友應該都對TlbImp比較瞭解了。這個工具是專門用來將Type Library(類型庫)轉換成對應的Interop Assembly,以便在.NET程式中使用對應的COM組件。這個Interop Assembly中主要包含RCW(Runtime Callable Wrapper)的Metadata(而非原始碼。RCW的實現其實是在CLR內部),以及部分事件處理代碼(如EventProvider),是.NET/COM Interop中不可或缺的一部分。
Time of Update: 2018-12-04
在MarshalAsAttribute中,第一個參數類型是UnmanagedType枚舉,用以指定對應的非管理的資料類型。在這個枚舉類型中,有兩個非常詭異的值,Unmanaged.LPStruct和UnmanagedType.Struct。對於這兩個枚舉值,在MSDN文檔中是這麼講的: StructA VARIANT, which is used to marshal managed formatted classes and value types. LPStruct A pointer
Time of Update: 2018-12-04
Sizeof在非Unsafe環境下只能用於預定義的一系列類型,如Int,Short等等。而在Unsafe環境下,sizeof可以被用於實值型別,但是實值型別中不可以有參考型別,否則C#編譯器會報錯:error CS0208: Cannot take the address of, get the size of, or declare a pointer to a managed type
Time of Update: 2018-12-04
通過Internet直接從Maven公用倉庫擷取依賴包是預設配置。不過對於中國軟體公司來講,訪問這些公用倉庫通常較慢,對於一些管理嚴格的不能直接上網的軟體公司來講,這更加是不可能的。Maven項目可以配置成僅從Maven私服上擷取依賴。上一篇已經講述了如何安裝Nexus為Maven私服。下面就假定使用S1伺服器上的Nexus服務。可以參考官方文檔:http://www.sonatype.com/books/nexus-book/reference/config-sect-intro.html在開
Time of Update: 2018-12-04
1.首先進入http://S1:8081/nexus/index.html 登入後,進入repositories頁面。2.點擊Add按鈕建立一個hosted repository,id為sheismylife,name為chenshu repository,點save按鈕。建立成功。3.如果有一個項目要發布,可以手動在網頁上upload,也可通過mvn deploy命令部署。如果是後者:修改pom.xml檔案 <distributionManagement>
Time of Update: 2018-12-04
Nexus私服讓我們可以在企業內部從同一個私服下載Maven倉庫裡面的dependency和plugin.很方便,不過昨天碰到的一個問題是,有一個倉庫加入到Nexus後不能,Maven工程無法通過Nexus私服下載該倉庫的dependency。這個倉庫叫做:http://download.osgeo.org/webdav/geotools/想了一個辦法繞過它,通過Maven的~/.m2/settings.xml中配置兩個Mirror,在遇到osgeo的時候直接使用該倉庫,而在其他情況下用私服。下
Time of Update: 2018-12-04
前面手工建立plugin的maven項目的時候,提到要注意幾點:1.packaging值位maven-plugin而不是jar,war2.dependency要用到maven-plugin-api3.還需要使用maven-plugin-plugin或者注釋裡面添加特殊標記來建立descriptor那麼,懂了這些基本方法後,看看maven-archetype-plugin為我們提供建立plugin項目提供便利。用下面的命令:mvn archetype:create
Time of Update: 2018-12-04
一直在使用Maven,用了各種各樣的外掛程式,但是有時候沒有的話,還是需要自己寫點。寫一個外掛程式並不難,會寫外掛程式的另一個好處就是瞭解了更多的Maven工作機制的內幕。對更好的使用Maven有協助。首先建立一個Maven項目,名叫plugin-example1。這裡要理解一個術語:mojo,就是Maven Plain Old Java Object,也就是一個普通的Java類。我們需要mojo的api庫,所以在pom.xml中添加一個依賴: <dependencies>