2010-01-05 95 views
3

我有一組Maven項目,我想定義訪問規則。
例如,項目數據庫和緩存只能由項目DataLayer訪問,但不能從項目UiLayer訪問。我使用Maven項目來講話,但只要易於集成到Maven項目中,包級訪問驗證也可以工作。如何在Maven項目中檢查項目邊界訪問

我已經看過Macker,它有一套很好的功能,比如訪問控制黑白java包,樣式檢查等,但一直很難將它們綁定到一組maven項目中。

macker-maven-plugin,這還在開發中,我已經能夠爲我工作,但恐怕這不會爲我服務。
該插件在所有項目的類上運行驗證。
這意味着我必須從現在開始在每個maven項目中都有macker-rules.xml定義訪問規則,以確保規則不被破壞。這看起來像是一場維護噩夢。

所以 - 我錯過了使用macker-maven-plugin的東西嗎?也許我沒有正確使用它。

我對JDepend沒有經驗,但是從短暫的閱讀看來,它看起來像是瘦客戶端的版本。有一個jDepend maven plugin,但它的功能僅僅是生成有關使用情況和統計​​信息的報告,但我真正需要的是其他內容,即訪問檢查,如果失敗,它將失敗構建。

有人可以建議一個更好的替代項目訪問檢查或包訪問檢查Maven項目?

感謝

+0

+1很高興認識Macker。 – cetnar 2010-01-05 11:31:28

回答

1

我認爲你正在尋找從maven-enforcer-plugin禁止的依賴關係。

<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <version>1.0</version> 
    <executions> 
     <execution> 
     <id>enforce-banned-dependencies</id> 
     <goals> 
      <goal>enforce</goal> 
     </goals> 
     <configuration> 
      <rules> 
      <bannedDependencies> 
       <excludes> 
       <exclude>org.apache.maven</exclude> 
       <exclude>org.apache.maven:badArtifact</exclude> 
       <exclude>*:badArtifact</exclude> 
       </excludes> 
       <includes> 
       <!--only 1.0 of badArtifact is allowed--> 
       <include>org.apache.maven:badArtifact:1.0</include> 
       </includes> 
      </bannedDependencies> 
      </rules> 
      <fail>true</fail> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 
+0

執行者插件很好。它的定義仍然有點麻煩,但是它或多或少都是我在尋找的,所以謝謝。 當我想說「允許DataLayer項目訪問緩存項目,但不允許任何其他項目訪問緩存」時,這很麻煩。所以我可以通過頂部pom中的排除組合來實現,並且包含在DataLayer pom中,但這不是最人性化的方法。 – Ran 2010-01-05 14:18:13

+0

@Ran你說得對。我可以建議的是將最常見的配置放在pluginManagment部分。對於其他情況,可以在單獨的poms中覆蓋它。 – cetnar 2010-01-05 14:26:38

0

如果拆分您的Maven項目的子項目進入和構建API的權利,有可能實現您的訪問限制爲子項目依賴的副作用。