知识大全 用Java在各种框架下编译Scala项目

Posted 文件

篇首语:你既认准这条路,又何必在意要走多久。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用Java在各种框架下编译Scala项目相关的知识,希望对你有一定的参考价值。

用Java在各种框架下编译Scala项目  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在IDE上的设置

  首先 下载的IntelliJ IDEA的 x(社区版) 因为目前它是最好的Scala的IDE 然后选择File |设置|插件 选择可用的选项卡来安装Scala插件

  创建Maven项目

  在IntelliJ IDEA中 选择文件|新建项目 然后选择Maven的模块创建一个Maven项目 然后修改如下所示的pom xml 添加所有你需要的设置 建立Scala的汇编语言

   <project xmlnsxmlns= xmlns:xsi= instance

            xsi:schemaLocation= v _ _ xsd >

       <modelVersion> </modelVersion>

       <groupId> foo</groupId>

       <artifactId>myapp</artifactId>

       <packaging>war</packaging>

       <version> SNAPSHOT</version>

       <name>myapp Java EE Webapp</name>

       <url>;/url>

       <properties>

           <spring version> RELEASE</spring version>

        </properties>

  

       <repositories>

           <repository>

               <id> </id>

               <name>Repository hosting the jee artifacts</name>

               <url>;/url>

            </repository>

  

           <repository>

               <id></id>

                <name>Scala tools Maven Repository</name>

               <url>;/url>

  

           </repository>

           <repository>

                <id>wpt release</id>

               <url> repo/releases</url>

  

           </repository>

           <repository>

                <id>wpt snapshot</id>

               <url> repo/snapshots</url>

  

           </repository>

       </repositories>

       <pluginRepositories>

           <pluginRepository>

               <id></id>

               <name>Scala tools Maven Repository</name>

               <url>;/url>

            </pluginRepository>

  

       </pluginRepositories>

       <dependencyManagement>

           <dependencies>

               <dependency>

                    <groupId> springframework</groupId>

                   <artifactId>spring context</artifactId>

  

                   <version>$spring version</version>

                </dependency>

  

                <dependency>

                   <groupId> springframework</groupId>

  

                   <artifactId>spring core</artifactId>

                   <version>$spring version</version>

               </dependency>

               <dependency>

                   <groupId> springframework</groupId>

                    <artifactId>spring web</artifactId>

  

                   <version>$spring version</version>

                </dependency>

  

                <dependency>

                   <groupId> springframework</groupId>

  

                    <artifactId>spring orm</artifactId>

                   <version>$spring version</version>

  

               </dependency>

           </dependencies>

       </dependencyManagement>

       <dependencies>

           <dependency>

               <groupId> h database</groupId>

               <artifactId>h </artifactId>

               <version> </version>

           </dependency>

           <dependency>

                <groupId> hibernate</groupId>

               <artifactId>hibernate entitymanager</artifactId>

  

               <version> GA</version>

           </dependency>

           <dependency>

               <groupId> springframework</groupId>

               <artifactId>spring orm</artifactId>

           </dependency>

           <dependency>

               <groupId>dev</groupId>

               <artifactId>wpt core</artifactId>

               <version> SNAPSHOT</version>

               <scope>test</scope>

           </dependency>

           <dependency>

               <groupId>dev</groupId>

               <artifactId>wpt runtime spring</artifactId>

                <version> SNAPSHOT</version>

  

           </dependency>

           <dependency>

                <groupId>javax</groupId>

               <artifactId>javaee web api</artifactId>

  

               <version> </version>

               <scope>provided</scope>

           </dependency>

           <dependency>

               <groupId>junit</groupId>

               <artifactId>junit</artifactId>

               <version> </version>

               <scope>test</scope>

           </dependency>

           <dependency>

               <groupId> scala lang</groupId>

               <artifactId>scala library</artifactId>

               <version> RC </version>

           </dependency>

           <dependency>

               <groupId> apache wicket</groupId>

               <artifactId>wicket</artifactId>

               <version> </version>

           </dependency>

           <dependency>

               <groupId> slf j</groupId>

               <artifactId>slf j log j </artifactId>

               <version> </version>

           </dependency>

       </dependencies>

       <build>

           <pluginManagement>

               <plugins>

                    <plugin>

                       <groupId> apache maven plugins</groupId>

  

                       <artifactId>maven piler plugin</artifactId>

                        <version> </version>

  

                   </plugin>

                   <plugin>

                        <groupId> scala tools</groupId>

                       <artifactId>maven scala plugin</artifactId>

  

                       <version> </version>

                   </plugin>

               </plugins>

           </pluginManagement>

           <plugins>

               <plugin>

                    <groupId> apache maven plugins</groupId>

                   <artifactId>maven piler plugin</artifactId>

  

                   <executions>

                       <execution>

                           <phase>pile</phase>

                           <goals>

                               <goal>pile</goal>

                           </goals>

                       </execution>

                   </executions>

                   <configuration>

                       <source> </source>

                       <target> </target>

                   </configuration>

               </plugin>

               <plugin>

                   <groupId> apache maven plugins</groupId>

                    <artifactId>maven war plugin</artifactId>

  

                   <version> beta </version>

                   <configuration>

                       <failOnMissingWebXml>false</failOnMissingWebXml>

                    </configuration>

  

               </plugin>

               <plugin>

                    <groupId> scala tools</groupId>

                   <artifactId>maven scala plugin</artifactId>

  

                   <executions>

                       <execution>

                            <id>scala pile first</id>

                           <phase>process resources</phase>

  

                            <goals>

                               <goal>add source</goal>

  

                               <goal>pile</goal>

                           </goals>

                       </execution>

                       <execution>

                            <id>scala test pile</id>

                           <phase>process test resources</phase>

  

                            <goals>

                               <goal>testCompile</goal>

  

                           </goals>

                       </execution>

                   </executions>

               </plugin>

           </plugins>

           <finalName>myapp</finalName>

       </build>

   </project>

  web xml中设置

  接下来 修改main/webapp/WEB INF/web xml 从而确立了Wicket的过滤器 打开Spring的JPA实体管理器和Spring监听器 进行Spring的初始化

   <?xml version= encoding= UTF ?>

   <web app version= xmlns= xmlns:xsi= instance

  

            xsi:schemaLocation= app_ _ xsd >

        <filter>

  

            <filter name>f </filter name>

           <filter class> springframework orm jpa support OpenEntityManagerInViewFilter</filter class>

  

       </filter>

       <filter>

            <filter name>f </filter name>

           <filter class> apache wicket protocol WicketFilter</filter class>

  

            <init param>

               <param name>applicationClassName</param name>

  

               <param value> foo myapp MyApp</param value>

            </init param>

  

       </filter>

       <filter mapping>

           <filter name>f </filter name>

           <url pattern>/app/*</url pattern>

       </filter mapping>

       <filter mapping>

           <filter name>f </filter name>

           <url pattern>/*</url pattern>

       </filter mapping>

       <context param>

           <param name>contextConfigLocation</param name>

           <param value>classpath:/beans xml</param value>

       </context param>

       <listener>

           <listener class> sprntext ContextLoaderListener</listener class>

        </listener>

  

   </web app>

  设置Spring bean访问和调用的数据库

  要定义这些Spring bean 创建main/resources的beans xml以及一下的内容

   <?xml version= encoding= UTF ?>

   <beansxmlnsbeansxmlns=

  

           xmlns:xsi= instance

          xmlns:context=

  

           xmlns:tx=

          xsi:schemaLocation=

  

           beans xsd

           

  

           context xsd

           

  

           tx xsd >

        <context:ponent scan base package= foo myapp />

  

       <bean id= emf class= springframework orm jpa LocalContainerEntityManagerFactoryBean >

           <property name= persistenceXmlLocation value= classpath:/META INF/my persistence xml />

        </bean>

       <bean id= transactionManager class= springframework orm jpa JpaTransactionManager >

  

           <property name= entityManagerFactory ref= emf />

        </bean>

  

       <tx:annotation driven />

   </beans>

  读取数据库配置中persistence xml文件 在这里 您将获得一个主目录中名为MyApp的H 数据库 因此 创建main/resources/META INF文件的内容如下

   <persistencexmlnspersistencexmlns=

               xmlns:xsi= instance

  

               xsi:schemaLocation= _ _ xsd

                version= >

  

      <persistence unit name= myapp transaction type= RESOURCE_LOCAL >

           <provider> hibernate ejb HibernatePersistence</provider>

  

           <properties>

              <propertynamepropertyname= nnection driver_class value= h Driver />

  

              <property name= nnection url value= jdbc:h :tcp://localhost/~/myapp />

               <propertynamepropertyname= nnection username value= sa />

  

               <propertynamepropertyname= nnection password value= />

              <property name= hibernate dialect value= hibernate dialect H Dialect />

  

              <property name= hibernate hbm ddl auto value= create />

           </properties>

  

      </persistence unit>

   /persistence>

  创建Wicket的页面

  在这里 您将创建一个Wicket页面显示从数据库加载一些内容 因此 创建主/Scala文件夹 右键单击它并选择新建|Scala类 命名为我的页面类和投入 foo myapp包中 如下所示

   package foo myapp

  

   import apacl _

   import basic Label

   import list ListItem ListView

   import apache wicket spring injection annot SpringBean

  

   import apache wicket model CompoundPropertyModel

  

   class MyPage extends WebPage

     @SpringBean

      var ps: ProductService = _

     val productListView = newListView[Product]( productListView ps getAll)

  

        def populateItem(item: ListItem[Product]) =

         item setModel(newCompoundPropertyModel[Product](item getDefaultModelObject))

  

         item add(new Label( name ))

         item add(new Label( price ))

      

    

     add(productListView)

  

  

  请注意 在创建ProductService对象加载的文件之后使用 此外 请注意该字段被分配到一个下划线(_) Scala编译为不可初始化的 而是留在默认状态 在你将覆蓋作为编译之前 执行Spring bean的页面构造 现在 创建在src/main/resources//foo/myapp的的l文件

   <!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN >

   <>

       <table border= >

           <tr wicket:id= productListView >

               <td wicket:id= name ></td>

               <td wicket:id= price ></td>

           </tr>

       </table>

   </>

  创建ProductService

  右键单击在in the src/main/scala文件夹中的 foo myapp包并选择New | Scala的类 然后选择创建ProductService

   package foo myapp

  

   import java util List

  

   trait ProductService

     def getAll: List[Product]

  

  

  这是接口 对创造一个DefaultProductService的Scala在同一个包内进行执行操作

   package foo myapp

  

   import javax persistence PersistenceContext EntityManager

   import springframework stereotype Service

   import springframework transaction annotation Transactional

   import springframework beans factory annotation Autowired

  

  

   @Service

   @Transactional

   class DefaultProductService extends ProductService

     @Autowired

     var products: Products = _

  

     def getAll = products getAll

  

  

  请注意 把它使用类型文件命名为DAO

  创建文件的DAO

  要创建的DAO 创建一个名为在同一文件夹

   package foo myapp

  

   import java util List

  

   trait Products

      def getAll: List[Product]

  

  

  然后创建在同一文件夹中的执行Scala的DefaultProducts文件

   package foo myapp

  

   import javax persistence PersistenceContext EntityManager

   import springframework stereotype Repository

   import java util List

  

   @Repository

   class DefaultProducts extends Products

     @PersistenceContext

     var em: EntityManager = _

  

     def getAll =

       em createQuery( select p from Product p ) getResultList asInstanceOf[List[Product]]

    

  

  创建entity程序

  创建entity程序并将其映射到数据库

   package foo myapp

  

   import javax persistence GeneratedValue Id Entity

  

   @Entity

   class Product

     @Id

     @GeneratedValue

     var id: Long = _

     var name: String = _

     var price: Double = _

  

  

  创建Wicket的应用程序

  最后 创建在同一个MyApp的Scala程序

   package foo myapp

  

   import apache wicket protocol WebApplication

  dev wicketpagetest MockableSpringBeanInjector

  

  

   class MyApp extends WebApplication

     def getHomePage = classOf[MyPage]

  

      override def init =

       MockableSpringBeanInjector installInjector(this)

  

    

  

  

  在这里 您指定为首页我的目录 植入Spring Bean中

  运行应用程序

  随着IntelliJ IDEA的版本不断改进 您将嵌入到应用服务器运行您的应用程序 这非常容易 在刚刚创建的测试 foo myapp的ManualTest在刚刚创建的测试 foo myapp包一类ManualTest/scala文件(不是main/scala文件) 以下内容是

   package foo myapp

  

  dev wicketpagetest WebAppJettyConfiguration WicketAppJettyLauncher

  

  

   object ManualTest

     def main(args: Array[String])

       val l = new WicketAppJettyLauncher

       l startAppInJetty(new WebAppJettyConfiguration)

    

  

  

  要运行的应用程序 首先需要运行数据库服务器上的H 程序 所以 在下载和解压 然后变成h /bin和运行h bat(或在Linux上h sh) ManualTest是在IDEA的编辑器上 在IDEA选择运行DEA 它将运行ManualTest Jetty的运行您的应用程序

  为了测试它 请尝试通过在浏览//localhost: /app

  不知道各位感觉如何 感谢各位支持!谢谢!

cha138/Article/program/Java/hx/201311/26175

相关参考

知识大全 面向Java开发人员的Scala指南: 深入了解Scala并发性 了解 Scala 如何简化并发编

面向Java开发人员的Scala指南:深入了解Scala并发性了解Scala如何简化并发编  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后

知识大全 面向Java开发人员的Scala指南: Scala和servlet

面向Java开发人员的Scala指南:Scala和servlet  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Java开发者的Scala指南: Scala+Twitter=Scitter

Java开发者的Scala指南:Scala+Twitter=Scitter  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 面向Java开发人员的Scala指南: Scala控制结构内部揭密

面向Java开发人员的Scala指南:Scala控制结构内部揭密  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 面向Java开发人员的Scala指南: 深入了解Scala并发性 了解 actor 如何提供新的应

面向Java开发人员的Scala指南:深入了解Scala并发性了解actor如何提供新的应  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后

知识大全 面向Java开发人员的Scala指南: 实现继承

面向Java开发人员的Scala指南:实现继承  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  S

知识大全 Java8 和 Scala 中的高阶函数

Java8和Scala中的高阶函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 面向Java开发人员的Scala指南: 增强Scitter库

面向Java开发人员的Scala指南:增强Scitter库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 面向Java开发人员的Scala指南: 关于特征和行为

面向Java开发人员的Scala指南:关于特征和行为  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Java8和Scala中的Lambda表达式

Java8和Scala中的Lambda表达式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs