FYI, I've split out the ScalaEntityManager stuff into its own project: http://scala-tools.org/mvnsites-snapshots/scalajpa/
Snapshot version right now mostly because I haven't had time to really test it and I haven't heard of anyone using it yet. Hopefully this will further simplify things for people using JPA. Right now most of my time is taken up working on the book, but once that's done I'll devote more time to improving JPA support in Scala and Lift. In the meantime, please let me know if you run into any issues. Derek On Mon, Mar 2, 2009 at 7:03 PM, Meredith Gregory <[email protected]>wrote: > Josh, > > Brilliant! Back to things that "just work"! Maybe my grandmother could use > maven... hmmm... ;-) > > Best wishes, > > --greg > > > On Mon, Mar 2, 2009 at 5:57 PM, Josh Suereth <[email protected]>wrote: > >> Greg, >> >> I'm guessing that you're generated java classes with that commented out >> section? You have to ensure that the maven-scala-plugin is run *before* the >> java compiler when using mixed-java/scala projects. >> >> Here's the mvn-fu (also shown >> here<http://scala-tools.org/mvnsites/maven-scala-plugin/usage_java.html> >> ): >> >> <plugin> >> <groupId>org.scala-tools</groupId> >> >> <artifactId>maven-scala-plugin</artifactId> >> >> <executions> >> <execution> >> <id>scala-compile-first</id> >> <phase>process-resources</phase> >> <goals> >> <goal>add-source</goal> >> >> >> <goal>compile</goal> >> </goals> >> </execution> >> >> <execution> >> <id>scala-test-compile</id> >> >> <phase>process-test-resources</phase> >> >> >> <goals> >> <goal>testCompile</goal> >> </goals> >> </execution> >> </executions> >> </plugin> >> >> >> >> What we're doing is "faking" the order of execution (as there's a "design >> flaw" in maven 2.0.x that is being fixed in 3.0). See >> here<http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html>for >> the full maven lifecycle. I'm going to list out the goals I see bound >> to phases in your build (if you use the above configuration): >> >> process-sources <- maven-jaxb-schemagen-plugin : generate (generates >> your .java files) >> process-resources <- { >> maven-resources-plugin : copy-resources (moves resources to "target" >> directory) >> maven-scala-plugin : compile (Compiles .scala code, passing .java >> files to scalac) >> } >> compile <- maven-compiler-plugin : compile (Compiles Java code, including >> generated code) >> process-test-resources <- maven-scala-plugin : testCompile (compiles >> .scala code, passing .java files to scalac) >> test-compile <- maven-compiler-plugin : testCompile (Compiles java testing >> code) >> test <- maven-surefire-plugin : test (Runs junit/other tests) >> package <- maven-war-plugin : war (Creates your war file) >> ... >> >> >> As you can see, this method (although slightly a hack) ensures the proper >> ordering of plugins so your build should complete successfully! >> >> -Josh >> >> >> On Mon, Mar 2, 2009 at 7:29 PM, Meredith Gregory < >> [email protected]> wrote: >> >>> Josh, >>> >>> Thanks for the response. Sadly, my mvn-fu is novitiate level; so, the pom >>> is little more than the vanilla pom that comes with a lift archetype. See >>> below. >>> >>> Best wishes, >>> >>> --greg >>> >>> >>> <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 >>> http://maven.apache.org/maven-v4_0_0.xsd"> >>> <modelVersion>4.0.0</modelVersion> >>> <groupId>com.sap.dspace</groupId> >>> <artifactId>dspace</artifactId> >>> <version>1.0-SNAPSHOT</version> >>> <packaging>war</packaging> >>> <name>dspace</name> >>> <inceptionYear>2007</inceptionYear> >>> <properties> >>> <scala.version>2.7.3</scala.version> >>> </properties> >>> >>> <repositories> >>> <repository> >>> <id>scala-tools.org</id> >>> <name>Scala-Tools Maven2 Repository</name> >>> <url>http://scala-tools.org/repo-releases</url> >>> </repository> >>> <repository> >>> <id>maven2-repository.dev.java.net</id> >>> <name>Java.net Repository for Maven</name> >>> <url>http://download.java.net/maven/2</url> >>> <layout>default</layout> >>> </repository> >>> <repository> >>> <id>dspace-local-repo</id> >>> <url>file://${basedir}/vendor/lib</url> >>> </repository> >>> </repositories> >>> >>> <pluginRepositories> >>> <pluginRepository> >>> <id>scala-tools.org</id> >>> <name>Scala-Tools Maven2 Repository</name> >>> <url>http://scala-tools.org/repo-releases</url> >>> </pluginRepository> >>> <pluginRepository> >>> <id>maven2-repository.dev.java.net</id> >>> <name>Java.net Repository for Maven</name> >>> <url>http://download.java.net/maven/2</url> >>> </pluginRepository> >>> </pluginRepositories> >>> >>> <dependencies> >>> <dependency> >>> <groupId>org.scala-lang</groupId> >>> <artifactId>scala-library</artifactId> >>> <version>${scala.version}</version> >>> </dependency> >>> <dependency> >>> <groupId>net.liftweb</groupId> >>> <artifactId>lift-core</artifactId> >>> <version>1.0</version> >>> </dependency> >>> <dependency> >>> <groupId>org.apache.derby</groupId> >>> <artifactId>derby</artifactId> >>> <version>10.2.2.0</version> >>> </dependency> >>> <dependency> >>> <groupId>javax.servlet</groupId> >>> <artifactId>servlet-api</artifactId> >>> <version>2.5</version> >>> <scope>provided</scope> >>> </dependency> >>> <dependency> >>> <groupId>junit</groupId> >>> <artifactId>junit</artifactId> >>> <version>3.8.1</version> >>> <scope>test</scope> >>> </dependency> >>> <dependency> >>> <groupId>org.mortbay.jetty</groupId> >>> <artifactId>jetty</artifactId> >>> <version>[6.1.6,)</version> >>> <scope>test</scope> >>> </dependency> >>> <!-- for LiftConsole --> >>> <dependency> >>> <groupId>org.scala-lang</groupId> >>> <artifactId>scala-compiler</artifactId> >>> <version>${scala.version}</version> >>> <scope>test</scope> >>> </dependency> >>> >>> <dependency> >>> <groupId>geronimo-spec</groupId> >>> <artifactId>geronimo-spec-ejb</artifactId> >>> <version>2.1-rc4</version> >>> </dependency> >>> <dependency> >>> <groupId>org.hibernate</groupId> >>> <artifactId>hibernate-entitymanager</artifactId> >>> <version>3.3.2.GA</version> >>> <exclusions> >>> <exclusion> >>> <groupId>javax.transaction</groupId> >>> <artifactId>jta</artifactId> >>> </exclusion> >>> </exclusions> >>> </dependency> >>> <dependency> >>> <groupId>geronimo-spec</groupId> >>> <artifactId>geronimo-spec-jta</artifactId> >>> <version>1.0.1B-rc4</version> >>> <scope>provided</scope> >>> </dependency> >>> <!-- local hibernate stuff --> >>> <dependency> >>> <groupId>hibernate</groupId> >>> <artifactId>hibernate3</artifactId> >>> <version>local</version> >>> </dependency> >>> <dependency> >>> <groupId>hibernate</groupId> >>> <artifactId>hibernate-tools</artifactId> >>> <version>local</version> >>> </dependency> >>> <dependency> >>> <groupId>mysql</groupId> >>> <artifactId>mysql-connector-java</artifactId> >>> <version>local</version> >>> </dependency> >>> <!-- Needed for schemagen --> >>> <dependency> >>> <groupId>com.sun.xml.bind</groupId> >>> <artifactId>jaxb-xjc</artifactId> >>> <version>2.0.2</version> >>> </dependency> >>> <!-- Needed for schemagen --> >>> <dependency> >>> <groupId>javax.activation</groupId> >>> <artifactId>activation</artifactId> >>> <version>1.1</version> >>> </dependency> >>> <!-- Needed for schemagen --> >>> <dependency> >>> <groupId>javax.xml.bind</groupId> >>> <artifactId>jsr173_api</artifactId> >>> <version>1.0</version> >>> </dependency> >>> <dependency> >>> <groupId>com.sun.jersey</groupId> >>> <artifactId>jersey-server</artifactId> >>> <version>1.0</version> >>> </dependency> >>> <dependency> >>> <groupId>com.sun.jersey</groupId> >>> <artifactId>jersey-client</artifactId> >>> <version>1.0</version> >>> <scope>test</scope> >>> </dependency> >>> <dependency> >>> <groupId>com.sun.grizzly</groupId> >>> <artifactId>grizzly-servlet-webserver</artifactId> >>> <version>1.8.6</version> >>> </dependency> >>> </dependencies> >>> >>> <build> >>> <sourceDirectory>src/main/scala</sourceDirectory> >>> <testSourceDirectory>src/test/scala</testSourceDirectory> >>> <plugins> >>> <plugin> >>> <groupId>org.apache.maven.plugins</groupId> >>> <artifactId>maven-compiler-plugin</artifactId> >>> <configuration> >>> <source>1.5</source> >>> <target>1.5</target> >>> </configuration> >>> </plugin> >>> <plugin> >>> <groupId>org.scala-tools</groupId> >>> <artifactId>maven-scala-plugin</artifactId> >>> <executions> >>> <execution> >>> <goals> >>> <goal>compile</goal> >>> <goal>testCompile</goal> >>> </goals> >>> </execution> >>> </executions> >>> <configuration> >>> <scalaVersion>${scala.version}</scalaVersion> >>> <displayCmd>true</displayCmd> >>> <jvmArgs> >>> <jvmArg>-Xdebug</jvmArg> >>> <jvmArg>-Xnoagent</jvmArg> >>> <jvmArg>-Djava.compiler=NONE</jvmArg> >>> >>> <jvmArg>-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005</jvmArg> >>> </jvmArgs> >>> </configuration> >>> </plugin> >>> <plugin> >>> <groupId>org.mortbay.jetty</groupId> >>> <artifactId>maven-jetty-plugin</artifactId> >>> <configuration> >>> <contextPath>/</contextPath> >>> <scanIntervalSeconds>5</scanIntervalSeconds> >>> </configuration> >>> </plugin> >>> <plugin> >>> <groupId>net.sf.alchim</groupId> >>> <artifactId>yuicompressor-maven-plugin</artifactId> >>> <executions> >>> <execution> >>> <goals> >>> <goal>compress</goal> >>> </goals> >>> </execution> >>> </executions> >>> <configuration> >>> <nosuffix>true</nosuffix> >>> </configuration> >>> </plugin> >>> <plugin> >>> <groupId>org.apache.maven.plugins</groupId> >>> <artifactId>maven-eclipse-plugin</artifactId> >>> <configuration> >>> <downloadSources>true</downloadSources> >>> <excludes> >>> <exclude>org.scala-lang:scala-library</exclude> >>> </excludes> >>> <classpathContainers> >>> >>> <classpathContainer>ch.epfl.lamp.sdt.launching.SCALA_CONTAINER</classpathContainer> >>> </classpathContainers> >>> <projectnatures> >>> >>> <java.lang.String>ch.epfl.lamp.sdt.core.scalanature</java.lang.String> >>> >>> <java.lang.String>org.eclipse.jdt.core.javanature</java.lang.String> >>> </projectnatures> >>> <buildcommands> >>> >>> <java.lang.String>ch.epfl.lamp.sdt.core.scalabuilder</java.lang.String> >>> </buildcommands> >>> </configuration> >>> </plugin> >>> <plugin> >>> <groupId>com.sun.tools.jxc.maven2</groupId> >>> <artifactId>maven-jaxb-schemagen-plugin</artifactId> >>> <version>1.2</version> >>> <configuration> >>> <destdir>${project.build.directory}/generated-schema</destdir> >>> <schemas> >>> <schema> >>> <namespace>http://dspace.sap.com/</namespace> >>> <file>constellation.xsd</file> >>> </schema> >>> </schemas> >>> <srcdir>${basedir}/src/main/java/constellation.pojos</srcdir> >>> <verbose>true</verbose> >>> </configuration> >>> <!-- <executions> --> >>> <!-- <execution> --> >>> <!-- <phase>process-sources</phase> --> >>> <!-- <configuration> --> >>> <!-- >>> <destdir>${project.build.directory}/generated-schema</destdir> --> >>> <!-- <schemas> --> >>> <!-- <schema> --> >>> <!-- <namespace>http://dspace.sap.com/</namespace> --> >>> <!-- <file>constellation.xsd</file> --> >>> <!-- </schema> --> >>> <!-- </schemas> --> >>> <!-- >>> <srcdir>${project.build.directory}/../src/main/java/com/sap/dspace/model/constellation</srcdir> >>> --> >>> <!-- <verbose>true</verbose> --> >>> <!-- </configuration> --> >>> <!-- <goals> --> >>> <!-- <goal>generate</goal> --> >>> <!-- </goals> --> >>> <!-- </execution> --> >>> <!-- </executions> --> >>> </plugin> >>> <!-- Maven Exec Plug-In: >>> http://mojo.codehaus.org/exec-maven-plugin/ --> >>> <plugin> >>> <groupId>org.codehaus.mojo</groupId> >>> <artifactId>exec-maven-plugin</artifactId> >>> <version>1.1</version> >>> <executions> >>> <execution> >>> <goals> >>> <goal>java</goal> >>> </goals> >>> </execution> >>> </executions> >>> <configuration> >>> <mainClass>com.sap.dspace.lib.Main</mainClass> >>> </configuration> >>> </plugin> >>> </plugins> >>> </build> >>> <reporting> >>> <plugins> >>> <plugin> >>> <groupId>org.scala-tools</groupId> >>> <artifactId>maven-scala-plugin</artifactId> >>> <configuration> >>> <scalaVersion>${scala.version}</scalaVersion> >>> </configuration> >>> </plugin> >>> </plugins> >>> </reporting> >>> </project> >>> >>> >>> >>> On Mon, Mar 2, 2009 at 3:50 PM, Josh Suereth >>> <[email protected]>wrote: >>> >>>> Mind sending me a pom and general layout of your project structure? >>>> >>>> There could be two solutions: 1- Move things into a multi-module >>>> project where your model.scala exists in one module and the other code in >>>> another module or 2 - We make sure the goal->phase bindings are appropriate >>>> for what you want to do. >>>> >>>> >>>> -Josh >>>> >>>> >>>> On Mon, Mar 2, 2009 at 6:42 PM, Meredith Gregory < >>>> [email protected]> wrote: >>>> >>>>> Lifted, >>>>> >>>>> i've got all the classes i generate making a class to a Model object >>>>> derived from the nice work that Derek did on the JPA demo. Now, here's the >>>>> rub. For some reason it's compiling the generated classes before tackling >>>>> the compilation of the model object. So... the compilation craps out. i've >>>>> been working around this by generating the classes, compiling the project >>>>> (without the classes) then moving them into place in the model directory >>>>> and >>>>> compiling the project again. What's the pretty way to enforce this >>>>> sequentialization in maven. i really want these classes compiled * >>>>> after* the Model.scala file is compiled. i'd like not to say much more >>>>> than this ordering constraint to maven -- if at all possible. >>>>> >>>>> Best wishes, >>>>> >>>>> --greg >>>>> >>>>> -- >>>>> L.G. Meredith >>>>> Managing Partner >>>>> Biosimilarity LLC >>>>> 806 55th St NE >>>>> Seattle, WA 98105 >>>>> >>>>> +1 206.650.3740 >>>>> >>>>> http://biosimilarity.blogspot.com >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> >>> -- >>> L.G. Meredith >>> Managing Partner >>> Biosimilarity LLC >>> 806 55th St NE >>> Seattle, WA 98105 >>> >>> +1 206.650.3740 >>> >>> http://biosimilarity.blogspot.com >>> >>> >>> >> >> >> > > > -- > L.G. Meredith > Managing Partner > Biosimilarity LLC > 806 55th St NE > Seattle, WA 98105 > > +1 206.650.3740 > > http://biosimilarity.blogspot.com > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
