IDEA中導入和導出LIB


 

1      需求

  用戶管理模塊需要獨立提供給不同的應用使用,因為每個應用並不需要關心用戶管理的

  內部細節,考慮通過LIB(java中是jar包)的方式提供,需要滿足:

  • 用戶管理模塊可以獨立輸出為jar包:com.dtdream.user.x.y.jar
  • 使用用戶管理的模塊導入jar包后,可以調用該jar包中提供的接口
  • 使用了該jar包的應用可以在tomcat中正常部署使用
  • 在idea工具中完成上述的操作。

2      生成Jar包

  因為我們的jar包只是提供基礎的功能接口,所以並不需要main.class用來在加載的時候執行。下面分步驟來詳述該過程:

     Step1: 找到要打包的文件

   

      這里target目錄下的com.dtdream.user的文件都是我們要打包的文件。

      注意:這里要使用target目錄下的class文件,不能用src目錄下的java文件,因為java是源文件,class文件才是java文件編譯后生成的字節碼文件,只有這樣的文件提供的接口才能被其他外部應用引用。

      Step2: 指定打包配置:

      點擊右邊第二個圖標:

   

      在出現的窗口中配置Artifacts:

   

     點擊+,選擇jar包,就可以出現一個類似上面的窗口。

  • 在Name中配置jar包的名稱
  • 選中Build on make
  • 配置Output directory,后續生成的jar包就放在這個目錄中了
  • 點擊Output Layout下的+, 選擇要打包的文件,這里可以選擇剛剛的class目錄,注意如果后續模塊要通過import com.dtdream.user.xxx來使用該jar包的接口,則這里就應該選擇com的上一層目錄class
  • 點擊Output Layout下的+,選擇一個META-INF文件,或者直接用工程中的該文件,這個是打包必須的,用處未知。

   完成上面步驟之后,點擊Apply->OK,這樣就配置好了。

     Step3: 生成JAR包:

   點擊idea上邊欄中的build->make project即可生成jar包

    生成的jar包如下,可以用WinRAR打開看一下:

   

3      使用JAR包

  Step1:導入JAR包:

  在IDEA中找到剛才配置Artifacts的界面,點到Libraries邊欄,點擊+號,添加剛才生成

  的JAR包,這里可以把JAR包拷貝到當前工程的lib目錄,或者放在任何適合的目錄,並不影響使用。

   

  Step2:在工程中使用JAR包提供的接口:

   

         從上圖可以看出,當前的工程師com.dtdream.cloud,在該工程中的controller目錄下的一個文件中,通過import關鍵字導入了com.dtdream.user的JAR包中實現的類,后續就可以正常調用類中的方法了。

  Step3:將JAR包導入到發布包中:

         完成了上述步驟之后,可以正常的編譯了。但是如果要是想將生成用於發布的war包還差一步,因為此時war包並不知道它要把com.dtdream.user包含進去。按照下面的方法配置:

   

         還是這個界面,在war包右面的窗口中添加lib,將com.dtdream.user的lib添加到manage.war中,后續發布manage.war的時候就可以包含user的jar包了。

         可以看到我們當時生成user的jar包的時候也是一個Artifact,所以如果我們的user的jar包如果對某些lib有強依賴的時候,也可以通過這里來添加自己依賴的lib。或者通過pom.xml來指定依賴也可以。

4      注意事項

4.1     Service注入的問題

   

  如上圖,如果通過@Resource來使用com.dtdream.user提供的各種Service,包括

  roleService, privilegeService, userService,DepartmentService。如果不做任何修改,會出錯,因為在mvc-disptch-servelet.xml中配置的是只掃描com.dtdream.cloud目錄下bean:

   

         為了可以在任 何地方都使用User中提供的Service,新增了一個spring-context.xml文件,在其中定義如下bean,直接指定service:

    <bean id="usersDao" class="com.dtdream.user.dao.impl.UserDao">

      <property name="sessionFactory" ref="sessionFactory"></property>

  </bean>


<bean id="departmentDao" class="com.dtdream.user.dao.impl.DepartmentDao">

    <property name="sessionFactory" ref="sessionFactory"></property>

</bean>



<bean id="roleDao" class="com.dtdream.user.dao.impl.RoleDao">

    <property name="sessionFactory" ref="sessionFactory"></property>

</bean>



<bean id="privilegeDao" class="com.dtdream.user.dao.impl.PrivilegeDao">

    <property name="sessionFactory" ref="sessionFactory"></property>

</bean>



<bean id="userService" class="com.dtdream.user.service.impl.UserService">

    <property name="dao" ref="usersDao"></property>

</bean>



<bean id="DepartmentService" class="com.dtdream.user.service.impl.DepartmentService">

    <property name="dao" ref="departmentDao"></property>

</bean>



<bean id="roleService" class="com.dtdream.user.service.impl.RoleService">

    <property name="dao" ref="roleDao"></property>

</bean>



<bean id="privilegeService" class="com.dtdream.user.service.impl.PrivilegeService">

    <property name="dao" ref="privilegeDao"></property>

</bean>

 

4.2     數據庫配置文件的修改問題

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan">
        <list>
            <!-- 可以加多個包 -->
            <value>com.dtdream.cloud.entity</value>
            <value>com.dtdream.cloud.openstack.entity</value>
            <value>com.dtdream.user.entity</value>
        </list>
    </property>

</bean>

        

  在上面加上com.dtdream.user.entity.

5      完

至此,可以在IDEA中正常導出和導入JAR包了,已經在環境中實測過可以使用。


免責聲明!

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



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