+++ /dev/null
----
-title: "Home"
----
-<ol id="crumbs">
- <li class="b"><strong class="b">Home</strong></li>
- </ol>
-<h1 id="logo"><strong class="l"><img alt="juplo" class="l" src="/img/logo.svg"></strong></h1>
-<nav id="navigation">
- <hr class="n">
- <a class="hide" href="#top" title="Show Content">Jump back to the top of the page</a>
- <h1 class="nav">Navigation</h1>
- <h2 class="nav menu">Section-Menu</h2>
- <ul class="cf" id="menu">
- <li class="m blog"><a class="m" href="blog/" th:href="@{/blog/}">Blog</a></li>
- <li class="m projects"><a class="m" href="projects.html" th:href="@{/projects.html}">Projects</a></li>
- <li class="m about"><a class="m" href="about.html" th:href="@{/about.html}">About</a></li>
- </ul>
- </nav>
-<div>
- <h1>Startseite</h1>
- <h2>Die Templates</h2>
- <ul>
- <li><a href="templates/layout.html">Layout</a> - Das Layout für juplo.de</li>
- <li><a href="templates/fragments.html">Fragmente</a> Auf mehreren Seiten verwendete Inhalte</li>
- <li><a href="error/404.html">404-Fehlerseite</a></li>
- <li><a href="error/5xx.html">5xx-Fehlerseite</a></li>
- <li><a href="templates/testlab.html">Testlab</a> Testseite für die Skalierung auf untrschiedliche Seitenbreiten</li>
- </ul>
- <h2>Fake-Inhalte</h2>
- <ul>
- <li><a href="projects.html">Potemkinsche Dörfer</a> - Beispielseiten zum Testen der gerenderten Menüstruktur</li>
- <li><a href="potemkin/typo.html">Typografie</a></li>
- <li><a href="potemkin/html-experimente/formulare.html">Formulare</a></li>
- <li><a href="potemkin/html-experimente.html">HTML-Experimente</a> - Testseiten für Edge-Cases</li>
- </ul>
- </div>
-<main class="maincontent">
- <div class="pack bg cf">
- <div class="p right">
- <h2>Work In Progress…</h2>
- <p>This page is under heavy construction.</p>
- <p style="text-align: center"><img alt="Man bashing his head on a computer-keyboard" src="/img/wip.gif"></p>
- <p>So, please be patiance with us…</p>
- </div>
- <div class="p left">
- <h2>About juplo</h2>
- <ul>
- <li><a href="/about.html" title="Visit my about-pag">More about juplo</a></li>
- <li><a href="/blog" title="(Hopefully) helpful stuff">Blog</a></li>
- <li><a href="/projects.html" title="All current projects">Projects</a></li>
- <li><a href="/contact.html" title="All contact-information on a glance">Contact</a></li>
- </ul>
- </div>
- </div>
- <div class="single">
- <h1>Hibernate Maven Plugin</h1>
- <p><strong>A simple Plugin for generating a Database-Schema from Hibernate Mappings</strong></p>
- <p>hibernate-maven-plugin is a plugin for generating a database-schema from your Hibernate mappings and create or update your database accordingly. Its main usage is to automatically create and populate a test-database for unit-tests in cooperation with the dbunit-maven-plugin.</p>
- <p><a href="/hibernate-maven-plugin/index.html" title="Visit the plugin-documentation">Learn more...</a></p>
- </div>
- </main>
-<aside class="marginalcontent">
- <div class="widget widget_recent_entries">
- <h2 class="widgettitle">Recent Posts</h2>
- <ul>
- <li><a href="http://juplo.de/show-spring-boot-auto-configuration-report-when-running-via-mvn-spring-boot-run/">Show Spring-Boot Auto-Configuration-Report When Running Via “mvn spring-boot:run”</a></li>
- <li><a href="http://juplo.de/parsing-json-from-facebooks-graph-api-using-jackson-2-x-and-javas-new-time-api/">Parsing JSON From Facebooks Graph-API Using Jackson 2.x And Java’s New Time-API</a></li>
- <li><a href="http://juplo.de/problems-deploying-a-spring-boot-app-as-war/">Problems Deploying A Spring-Boot-App As WAR</a></li>
- <li><a href="http://juplo.de/hibernate-maven-plugin-2-0-0-released/">hibernate-maven-plugin 2.0.0 released!</a></li>
- <li><a href="http://juplo.de/release-of-a-maven-plugin-to-maven-central-fails-with-error-unknown-tag-goal/">Release Of A Maven-Plugin to Maven Central Fails With “error: unknown tag: goal”</a></li>
- </ul>
- </div>
- </aside>
+++ /dev/null
----
-title: Archiv - 2013
-linkTitle: 2013
-layout: year
----
+++ /dev/null
----
-categories:
- - jetty
- - less
- - maven
- - wro4j
-date: "2013-12-06T10:58:17+00:00"
-title: Combining jetty-maven-plugin and wro4j-maven-plugin for Dynamic Reloading of LESS-Resources
-url: /combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/
----
-<article class="maincontent">
- <article class="post-140 post type-post status-publish format-standard hentry category-jetty category-less category-maven category-wro4j" id="post-140">
- <div class="entry-header">
- <h1 class="entry-title">Combining jetty-maven-plugin and wro4j-maven-plugin for Dynamic Reloading of LESS-Resources</h1>
- <div class="entry-meta">
- Posted on <a href="http://juplo.de/combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/" rel="bookmark" title="12:58"><time class="entry-date" datetime="2013-12-06T12:58:17+00:00">December 6, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
- </div><!-- .entry-meta -->
- </div><!-- .entry-header -->
- <div class="entry-content">
- <p>Ever searched for a simple configuration, that lets you use your <a href="http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://wiki.eclipse.org']);" title="See the documentation for mor information">jetty-maven-plugin</a> as you are used to, while working with <a href="http://www.csscss.org/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.csscss.org']);" title="See LESS CSS documentation for mor informations">LESS</a> to simplify your stylesheets?</p>
- <p>You cannot do both, use the <a href="http://www.csscss.org/#usage" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.csscss.org']);" title="More about the client-side usage of LESS">Client-side mode</a> of LESS to ease development and use the <a href="https://github.com/marceloverdijk/lesscss-maven-plugin" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://github.com']);" title="Homepage of the official LESS CSS maven plugin">lesscss-maven-plugin</a> to automatically compile the LESS-sources into CSS for production. That does not work, because your stylesheets must be linked in different ways if you are switching between the client-side mode – which is best for development – and the pre-compiled mode – which is best for production. For the client-side mode you need something like:</p>
- <pre class="prettyprint linenums"> <code class="html">
- <link rel="stylesheet" type="text/css" href="styles.css" />
- <script src="less.js" type="text/javascript"></script>
- </code>
- </pre>
- <p>While, for the pre-compiled mode, you want to link to your stylesheets as usual, with:</p>
- <pre class="prettyprint linenums"> <code class="html">
- <link rel="stylesheet" type="text/css" href="styles.css" />
- </code>
- </pre>
- <p>While looking for a solution to this dilemma, I stumbled accross <a href="https://code.google.com/p/wro4j/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://code.google.com']);" title="See the documentation of ths wounderfull tool">wro4j</a>. Originally intended, to speed up page-delivery by combining and minimizing multiple resources into one through the use of a servlet-filter, this tool also comes with a maven-plugin, that let you do the same offline, while compiling your webapp.</p>
- <p>The idea is, to use the <a href="http://code.google.com/p/wro4j/wiki/MavenPlugin" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://code.google.com']);" title="See the documentation of hte wro4j-maven-plugin">wro4j-maven-plugin</a> to compile and combine your LESS-sources into CSS for production and to use the <a href="http://code.google.com/p/wro4j/wiki/Installation" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://code.google.com']);" title="See how to configure the filter">wro4j filter</a>, to dynamically deliver the compiled CSS while developing. This way, you do not have to alter your HTML-code, when switching between development and production, because you always link to the CSS-files.</p>
- <p>So, lets get dirty!</p>
- <h2>Step 1: Configure wro4j</h2>
- <p>First, we configure <strong>wro4j</strong>, like as we want to use it to speed up our page. The details are explained and linked on wro4j’s <a href="http://code.google.com/p/wro4j/wiki/GettingStarted" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://code.google.com']);" title="Visit the Getting-Started-Page">Getting-Started-Page</a>. In short, we just need two files: <strong>wro.xml</strong> and <strong>wro.properties</strong>.</p>
- <h3>wro.xml</h3>
- <p>wro.xml tells wro4j, which resources should be combined and how the result should be named. I am using the following configuration to generate all LESS-Sources beneath <code>base/</code> into one CSS-file called <code>base.css</code>:</p>
- <pre class="prettyprint linenums"> <code class="xml">
- <groups xmlns="http://www.isdc.ro/wro">
- <group name="base">
- <css>/css/base/*.css</css>
- </group>
- </code>
- </pre>
- <p>wro4j looks for <code>/css/base/*.css</code> inside the root of the web-context, which is equal to <code>src/main/webapp</code> in a normal maven-project. There are <a href="http://code.google.com/p/wro4j/wiki/ResourceTypes" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://code.google.com']);" title="See the resource locator documentation of wro4j for more details">other ways to specifie the resources</a>, which enable you to store them elswhere. But this approach works best for our goal, because the path is understandable for both: the wro4j servlet-filter, we are configuring now for our development-environment, and the wro4j-maven-plugin, that we will configure later for build-time compilation.</p>
- <h3>wro.properties</h3>
- <p>wro.properties in short tells wro4j, how or if it should convert the combined sources and how it should behave. I am using the following configuration to tell wro4j, that it should convert <code>*.css</code>-sources into CSS and do that on <em>every request</em>:</p>
- <pre class="prettyprint linenums"> <code class="properties">
- preProcessors=less4j
- disableCache=true
- </code>
- </pre>
- <p>You can do a lot more here. There are countless <a href="http://code.google.com/p/wro4j/wiki/ConfigurationOptions" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-article', 'http://code.google.com']);" title="See all configuration options">configuration options</a> to fine-tune the behaviour of wro4j. The <code>disableCache=true</code> is crucial, because we would not see the changes take effect when developing with <strong>jetty-maven-plugin</strong> later on. You can also do much more with your resources here, for example <a href="https://code.google.com/p/wro4j/wiki/AvailableProcessors" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-article', 'http://code.google.com']);" title="See all available processors">minimizing</a>. But for our goal, we are now only intrested in the compilation of our LESS-sources.</p>
- <h2>Step 2: Configure the wro4j servlet-filter</h2>
- <p>Configuring the filter in the <strong>web.xml</strong> is easy. It is explained in wro4j’s <a href="https://code.google.com/p/wro4j/wiki/Installation" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-article', 'http://code.google.com']);" title="See the installation instructions for the wro4j servlet-filter">installation-insctuctions</a>. But the trick is, that we do not want to configure that filter for the production-version of our webapp, because we want to compile the resources offline, when the webapp is build. To acchieve this, we can use the <code><overrideDescriptor></code>-Parameter of the <a href="http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin#Configuring_Your_WebApp" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-article', 'http://wiki.eclipse.org']);" title="Read more about the configuration of the jetty-maven-plugin">jetty-maven-plugin</a>.</p>
- <h2><overrideDescriptor></h2>
- <p>This parameter lets you specify additional configuration options for the web.xml of your webapp. I am using the following configuration for my jetty-maven-plugin:</p>
- <pre class="prettyprint linenums"> <code class="xml">
- <plugin>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-maven-plugin</artifactId>
- <configuration>
- <webApp>
- <overrideDescriptor>${project.basedir}/src/test/resources/jetty-web.xml</overrideDescriptor>
- </webApp>
- </configuration>
- <dependencies>
- <dependency>
- <groupId>ro.isdc.wro4j</groupId>
- <artifactId>wro4j-core</artifactId>
- <version>${wro4j.version}</version>
- </dependency>
- <dependency>
- <groupId>ro.isdc.wro4j</groupId>
- <artifactId>wro4j-extensions</artifactId>
- <version>${wro4j.version}</version>
- <exclusions>
- <exclusion>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </exclusion>
- <exclusion>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- </exclusion>
- <exclusion>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.google.javascript</groupId>
- <artifactId>closure-compiler</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.github.lltyk</groupId>
- <artifactId>dojo-shrinksafe</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jruby</groupId>
- <artifactId>jruby-core</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jruby</groupId>
- <artifactId>jruby-stdlib</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jruby</groupId>
- <artifactId>jruby-stdlib</artifactId>
- </exclusion>
- <exclusion>
- <groupId>me.n4u.sass</groupId>
- <artifactId>sass-gems</artifactId>
- </exclusion>
- <exclusion>
- <groupId>nz.co.edmi</groupId>
- <artifactId>bourbon-gem-jar</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.codehaus.gmaven.runtime</groupId>
- <artifactId>gmaven-runtime-1.7</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.webjars</groupId>
- <artifactId>jshint</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.webjars</groupId>
- <artifactId>less</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.webjars</groupId>
- <artifactId>emberjs</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.webjars</groupId>
- <artifactId>handlebars</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.webjars</groupId>
- <artifactId>coffee-script</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.webjars</groupId>
- <artifactId>jslint</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.webjars</groupId>
- <artifactId>json2</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.webjars</groupId>
- <artifactId>jquery</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- </dependencies>
- </plugin>
- </code>
- </pre>
- <p>The dependencies to <strong>wro4j-core</strong> and <strong>wro4j-extensions</strong> are needed by jetty, to be able to enable the filter defined below. Unfortunatly, one of the transitive dependencies of <code>wro4j-extensions</code> triggers an uggly error when running the jetty-maven-plugin. Therefore, all unneeded dependencies of <code>wro4j-extensions</code> are excluded, as a workaround for this error/bug.</p>
- <h2>jetty-web.xml</h2>
- <p>And my jetty-web.xml looks like this:</p>
- <pre class="prettyprint linenums"> <code class="xml">
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- version="2.5">
- <filter>
- <filter-name>wro</filter-name>
- <filter-class>ro.isdc.wro.http.WroFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>wro</filter-name>
- <url-pattern>*.css</url-pattern>
- </filter-mapping>
- </web-app>
- </code>
- </pre>
- <p>The filter processes any URI’s that end with <code>.css</code>. This way, the wro4j servlet-filter makes <code>base.css</code> available under any path, because for exampl <code>/base.css</code>, <code>/css/base.css</code> and <code>/foo/bar/base.css</code> all end with <code>.css</code>.</p>
- <p>This is all, that is needed to develop with dynamically reloadable compiled LESS-resources. Just fire up your browser and browse to <code>/what/you/like/base.css</code>. (But do not forget to put some LESS-files in <code>src/main/webapp/css/base/</code> first!)</p>
- <h2>Step 3: Install wro4j-maven-plugin</h2>
- <p>All that is left over to configure now, is the build-process. If you would build and deploy your webapp now, the CSS-file <code>base.css</code> would not be generated and the link to your stylesheet, that already works in our jetty-maven-plugin environment would point to a 404. Hence, we need to set up the <strong>wro4j-maven-plugin</strong>. I am using this configuration:</p>
- <pre class="prettyprint linenums"> <code class="xml">
- <plugin>
- <groupId>ro.isdc.wro4j</groupId>
- <artifactId>wro4j-maven-plugin</artifactId>
- <version>${wro4j.version}</version>
- <configuration>
- <wroManagerFactory>ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory</wroManagerFactory>
- <cssDestinationFolder>${project.build.directory}/${project.build.finalName}/css/</cssDestinationFolder>
- </configuration>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </code>
- </pre>
- <p>I connected the <code>run</code>-goal with the <code>package</code>-phase, because the statically compiled CSS-file is needed only in the final war. The <code>ConfigurableWroManagerFactory</code> tells wro4j, that it should look up further configuration options in our <code>wro.properties</code>-file, where we tell wro4j, that it should compile our LESS-resources. The <code><cssDestinationFolder></code>-tag tells wro4j, where it should put the generated CSS-file. You can adjust that to suite your needs.</p>
- <p>That’s it: now the same CSS-file, which is created on the fly by the wro4j servlet-filter when using <code>mvn jetty:run</code> and, thus, enables dynamic reloading of our LESS-resources, is generated during the build-process by the wro4j-maven-plugin.</p>
- <h2>Cleanup and further considerations</h2>
- <h3>lesscss-maven-plugin</h3>
- <p>If you already compile your LESS-resources with the lesscss-maven-plugin, you can stick with it and skip step 3. But I strongly recommend giving wro4j-maven-plugin a try, because it is a much more powerfull tool, that can speed up your final webapp even more.</p>
- <h3>Clean up your mess </h3>
- <p>With a configuration like the above one, your LESS-resources and wro4j-configuration-files will be packed into your production-war. That might be confusing later, because neither wro4j nor LESS is used in the final war. You can add the following to your <code>pom.xml</code> to exclude these files from your war for the sake of clarity:</p>
- <pre class="prettyprint linenums"> <code class="xml">
- <plugin>
- <artifactId>maven-war-plugin</artifactId>
- <configuration>
- <warSourceExcludes>
- WEB-INF/wro.*,
- less/**
- </warSourceExcludes>
- </configuration>
- </plugin>
- </code>
- </pre>
- <h3>What’s next?</h3>
- <p>We only scrached the surface, of what can be done with wro4j. Based on this configuration, you can easily enable additional features to fine-tune your final build for maximum speed. You really should take a look at the <a href="https://code.google.com/p/wro4j/wiki/AvailableProcessors" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-article', 'http://code.google.com']);" title="Available Processors">list of available Processors</a>!</p>
- </div><!-- .entry-content -->
- <footer class="entry-meta">
- This entry was posted in <a href="http://juplo.de/category/jetty/" rel="category tag" title="View all posts in Jetty">Jetty</a>, <a href="http://juplo.de/category/css/" rel="category tag" title="View all posts in less">less</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>, <a href="http://juplo.de/category/wro4j/" rel="category tag" title="View all posts in wro4j">wro4j</a>. Bookmark the <a href="http://juplo.de/combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/" rel="bookmark" title="Permalink to Combining jetty-maven-plugin and wro4j-maven-plugin for Dynamic Reloading of LESS-Resources">permalink</a>.
- </footer><!-- .entry-meta -->
- </article><!-- #post-140 -->
- <!-- You can start editing here. -->
- <!-- If comments are open, but there are no comments. -->
- <div id="respond">
- <h3>Leave a Reply</h3>
- <div id="cancel-comment-reply">
- <small><a href="/combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/#respond" id="cancel-comment-reply-link" rel="nofollow" style="display:none;">Click here to cancel reply.</a></small>
- </div>
- <form action="http://juplo.de/wp-comments-post.php" id="commentform" method="post">
- <p>Logged in as <a href="http://juplo.de/wp-admin/profile.php">Kai Moritz</a>. <a href="http://juplo.de/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fjuplo.de%2Fcombining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources%2F&_wpnonce=09e5cb501d" title="Log out of this account">Log out »</a></p>
- <!--<p><small><strong>XHTML:</strong> You can use these tags: <code><a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> </code></small></p>-->
- <p><textarea cols="58" id="comment" name="comment" rows="10" tabindex="4"></textarea></p>
- <p><input id="submit" name="submit" tabindex="5" type="submit" value="Submit Comment">
- <input id="comment_post_ID" name="comment_post_ID" type="hidden" value="140">
- <input id="comment_parent" name="comment_parent" type="hidden" value="0">
- </p>
- <input id="_wp_unfiltered_html_comment_disabled" name="_wp_unfiltered_html_comment_disabled" type="hidden" value="2096655c89"><script>(function() {
- if (window === window.parent) {
- document.getElementById('_wp_unfiltered_html_comment_disabled').name = '_wp_unfiltered_html_comment';
- }
- })();</script>
- <p style="display: none;"><input id="akismet_comment_nonce" name="akismet_comment_nonce" type="hidden" value="f31e001227"></p>
- </form>
- </div>
- </article>
-<aside class="marginalcontent">
- <div class="widget-area" id="secondary" role="complementary">
- <aside class="widget" id="archives">
- <h1 class="widget-title">Archives</h1>
- <ul>
- <li><a href="http://juplo.de/2013/10/" title="October 2013">October 2013</a></li>
- <li><a href="http://juplo.de/2013/08/" title="August 2013">August 2013</a></li>
- <li><a href="http://juplo.de/2013/01/" title="January 2013">January 2013</a></li>
- <li><a href="http://juplo.de/2012/11/" title="November 2012">November 2012</a></li>
- </ul>
- </aside>
- <aside class="widget" id="categories">
- <h1 class="widget-title">Most Used Categories</h1>
- <ul>
- <li class="cat-item cat-item-4"><a href="http://juplo.de/category/java/" title="View all posts filed under Java">Java</a> (6)</li>
- <li class="cat-item cat-item-6"><a href="http://juplo.de/category/hibernate/" title="View all posts filed under Hibernate">Hibernate</a> (5)</li>
- <li class="cat-item cat-item-8"><a href="http://juplo.de/category/maven/" title="View all posts filed under Maven">Maven</a> (5)</li>
- <li class="cat-item cat-item-9"><a href="http://juplo.de/category/jpa/" title="View all posts filed under JPA">JPA</a> (1)</li>
- <li class="cat-item cat-item-10"><a href="http://juplo.de/category/appengine/" title="View all posts filed under appengine">appengine</a> (1)</li>
- <li class="cat-item cat-item-11"><a href="http://juplo.de/category/oauth2/" title="View all posts filed under oauth2">oauth2</a> (1)</li>
- </ul>
- </aside>
- <aside class="widget widget_search" id="search">
- <h1 class="widget-title">Search</h1>
- <form action="http://juplo.de/" class="searchform" id="searchform" method="get" role="search">
- <div>
- <label class="screen-reader-text" for="s">Search for:</label>
- <input id="s" name="s" type="text" value="">
- <input id="searchsubmit" type="submit" value="Search">
- </div>
- </form>
- </aside>
- </div><!-- #secondary .widget-area -->
- <div class="widget-area" id="tertiary" role="supplementary">
- </div><!-- #tertiary .widget-area -->
- </aside>
+++ /dev/null
----
-title: Archiv - 2020
-linkTitle: 2020
-layout: year
----
+++ /dev/null
----
-categories:
- - hibernate
- - java
- - maven
-date: "2020-06-15T19:15:58+00:00"
-title: hibernate4-maven-plugin
-url: /hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/
----
-<article class="maincontent">
- <article class="post-34 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-34">
- <div class="entry-header">
- <h1 class="entry-title">hibernate4-maven-plugin</h1>
- <div class="entry-meta">
- Posted on <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/" rel="bookmark" title="19:29"><time class="entry-date" datetime="2012-11-28T19:29:12+00:00">November 28, 2012</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
- </div><!-- .entry-meta -->
- </div><!-- .entry-header -->
- <div class="entry-content">
- <h2>A simple Plugin for generating a Database-Schema from Hibernate 4 Mapping-Annotations</h2>
- <p>
- Hibernate comes with the buildin functionality, to automatically create or update the database schema. This functionality is configured in the session-configuraton via the parameter <code>hbm2ddl.auto</code> (see <a href="http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/#configuration-optional" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://docs.jboss.org']);">Hibernate Reference Documentation – Chapter 3.4. Optional configuration properties</a>). But doing so <a href="http://stackoverflow.com/questions/221379/hibernate-hbm2ddl-auto-update-in-production" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://stackoverflow.com']);">is not very wise</a>, because you can easily corrupt or erase your production database, if this configuration parameter slips through to your production environment.
- </p>
- <p>
- Alternatively, you can <a href="http://stackoverflow.com/questions/835961/how-to-creata-database-schema-using-hibernate" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://stackoverflow.com']);">run the tools <strong>SchemaExport</strong> or <strong>SchemaUpdate</strong> by hand</a>. But that is not very comfortable and being used to maven you will quickly long for a plugin, that does that job automatically for you, when you fire up your test cases.
- </p>
- <p>In the good old times, there was the <a href="http://mojo.codehaus.org/maven-hibernate3/hibernate3-maven-plugin/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://mojo.codehaus.org']);">Maven Hibernate3 Plugin</a>, that does this for you. But unfortunatly, this plugin is not compatible with Hibernate 4.x. Since there does not seem to be any successor for the Maven Hibernate3 Plugin and <a href="http://www.google.de/search?q=hibernate4+maven+plugin" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.google.de']);">googeling</a> does not help, I decided to write up this simple plugin (inspired by these two articles I found: <a href="http://www.tikalk.com/alm/blog/schema-export-hibernate-4-and-maven" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.tikalk.com']);">Schema Export with Hibernate 4 and Maven</a> and <a href="http://doingenterprise.blogspot.de/2012/05/schema-generation-with-hibernate-4-jpa.html" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://doingenterprise.blogspot.de']);">Schema generation with Hibernate 4, JPA and Maven</a>).
- </p>
- <p>
- I hope, the resulting simple to use buletproof <a href="/hibernate4-maven-plugin/">hibernate4-maven-plugin</a> is usefull!
- </p>
- <p>
- <strong><a href="/hibernate4-maven-plugin/">Try it out now!</a></strong></p>
- </div><!-- .entry-content -->
- <footer class="entry-meta">
- This entry was posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>. Bookmark the <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/" rel="bookmark" title="Permalink to hibernate4-maven-plugin">permalink</a>.
- </footer><!-- .entry-meta -->
- </article><!-- #post-34 -->
- <!-- You can start editing here. -->
- <h3 id="comments">15 Responses to “hibernate4-maven-plugin”</h3>
- <div class="navigation">
- <div class="alignleft"></div>
- <div class="alignright"></div>
- </div>
- <ol class="commentlist">
- <li class="comment even thread-even depth-1 parent" id="comment-556">
- <div class="comment-body" id="div-comment-556">
- <div class="comment-author vcard">
- <cite class="fn">Jukes</cite> <span class="says">says:</span>
- </div>
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-556">
- November 7, 2013 at 23:18</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=556" title="Edit comment">(Edit)</a>
- </div>
- <p>
- Hi thanks a lot for making this plugin available, great work!!<br>
- I have a problem generating postgres schema. Looks like the plugin ignores the data type when adding default values and that yields a syntax error from Postgres. Or maybe I’m doing something wrong. I’m using version 1.0.3.</p>
- <p>For example I have in java:</p>
- <p>
- @Column(name = “financialEnabled”, nullable = false, columnDefinition = “default TRUE”)<br>
- private boolean financialEnabled;
- </p>
- <p>
- Generated SQL is:<br>
- financialEnabled default TRUE not null,
- </p>
- <p>As you can see the data type boolean is not translated to the SQL script. Thanks a lot for your help.</p>
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=556#respond" onclick="return addComment.moveForm("div-comment-556", "556", "respond", "34")">Reply</a>
- </div>
- </div>
- <ul class="children">
- <li class="comment byuser comment-author-kai bypostauthor odd alt depth-2" id="comment-567">
- <div class="comment-body" id="div-comment-567">
- <div class="comment-author vcard">
- <cite class="fn"><a class="url" href="http://juplo.de" rel="external nofollow">Kai Moritz</a></cite> <span class="says">says:</span>
- </div>
- <div class="comment-meta commentmetadata">
- <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-567">
- November 11, 2013 at 13:09</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=567" title="Edit comment">(Edit)
- </a>
- </div>
- <p>
- This plugin is only a tool to automate the generation of the SQL in your development-environment.<br>
- Questions on how to anotate your code correctly are better asked in a user-forum from hibernate or such.</p>
- <p>
- Nevertheless, I think I can give you a usefull hint:<br>
- You are overwriting the automatically generated column-definition with “default TRUE”.<br>
- Try it with</p>
- <p>
- @Column(name = “financialEnabled”, nullable = false)<br>
- private boolean financialEnabled;</p>
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=567#respond" onclick="return addComment.moveForm("div-comment-567", "567", "respond", "34")">Reply</a>
- </div>
- </div>
- </li><!-- #comment-## -->
- </ul><!-- .children -->
- </li><!-- #comment-## -->
- <li class="comment even thread-odd thread-alt depth-1 parent" id="comment-390">
- <div class="comment-body" id="div-comment-390">
- <div class="comment-author vcard">
- <cite class="fn">Milios</cite> <span class="says">says:</span>
- </div>
- <div class="comment-meta commentmetadata">
- <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-390">
- October 10, 2013 at 15:02
- </a>
-
- <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=390" title="Edit comment">(Edit)</a>
- </div>
- <p>Hi,</p>
- <p>
- looks like a very nice plugin. Unfortunately, part of our entities are in other modules/dependencies.<br>
- Do you plan to add the possibility to scan also for dependencies of the project or at least of the plugin?</p>
- <p>Also, when I only want to generate the SQL and use the following configuration, I got nothing.</p>
- <p>Config:</p>
- <p>
- de.juplo<br>
- hibernate4-maven-plugin<br>
- 1.0.2</p>
- <p>
- true<br>
- SCRIPT<br>
- NONE<br>
- com.deutscheboerse.hibernate.PostgreSQLDialect<br>
- ${project.build.directory}/hibernate4/cmm-schema.sql</p>
- <p>
- com.deutscheboerse.energy<br>
- energy-commons-hibernate<br>
- ${commons.hibernate.version}</p>
- <p>
- org.springframework.security<br>
- spring-security-core<br>
- ${spring.security.version}</p>
- <p>
- org.slf4j<br>
- slf4j-log4j12<br>
- ${slf4j.version}</p>
- <p>
- Output:<br>
- mvn hibernate4:export -e<br>
- [INFO] Error stacktraces are turned on.<br>
- [INFO] Scanning for projects…<br>
- [INFO]<br>
- [INFO] ————————————————————————<br>
- [INFO] Building CMM WAR 1.0.0-RC5-SNAPSHOT<br>
- [INFO] ————————————————————————<br>
- [INFO]<br>
- [INFO] — hibernate4-maven-plugin:1.0.2:export (default-cli) @ cmm-war —<br>
- [INFO] Scanning directory D:\_dev\work\ii\src\cmm\trunk\cmm-war\target\classes f<br>
- [INFO] No hibernate-properties-file found! (Checked path: D:\_dev\work\ii\src\cm<br>
- [INFO] Gathered hibernate-configuration (turn on debugging for details):<br>
- [INFO] hibernate.dialect = com.deutscheboerse.hibernate.PostgreSQLDialect<br>
- [INFO] HHH000400: Using dialect: com.deutscheboerse.hibernate.PostgreSQLDialect<br>
- [INFO] ————————————————————————<br>
- [INFO] BUILD SUCCESS<br>
- [INFO] ————————————————————————<br>
- [INFO] Total time: 10.932s<br>
- [INFO] Finished at: Thu Oct 10 12:51:05 UTC 2013<br>
- [INFO] Final Memory: 9M/23M<br>
- [INFO] ————————————————————————</p>
- <p>
- Thanks for any help,<br>
- Milos.
- </p>
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=390#respond" onclick="return addComment.moveForm("div-comment-390", "390", "respond", "34")">Reply</a>
- </div>
- </div>
- <ul class="children">
- <li class="comment byuser comment-author-kai bypostauthor odd alt depth-2 parent" id="comment-391">
- <div class="comment-body" id="div-comment-391">
- <div class="comment-author vcard">
- <cite class="fn"><a class="url" href="http://juplo.de" rel="external nofollow">Kai Moritz</a></cite> <span class="says">says:</span>
- </div>
- <div class="comment-meta commentmetadata">
- <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-391">
- October 10, 2013 at 22:19
- </a>
-
- <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=391" title="Edit comment">(Edit)</a> </div>
- <p>
- Yes, I am working on the possibility, to scan for annotations in dependencies.<br>
- Unfortunatly, I have no example-project for this use-case by hand.<br>
- It would help a lot, if you could provide a sample-project on github or such.
- </p>
- <p>Greetings kai</p>
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=391#respond" onclick="return addComment.moveForm("div-comment-391", "391", "respond", "34")">Reply</a>
- </div>
- </div>
- <ul class="children">
- <li class="comment byuser comment-author-kai bypostauthor even depth-3" id="comment-568">
- <div class="comment-body" id="div-comment-568">
- <div class="comment-author vcard">
- <cite class="fn"><a class="url" href="http://juplo.de" rel="external nofollow">Kai Moritz</a></cite> <span class="says">says:</span>
- </div>
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-568">
- November 11, 2013 at 13:11</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=568" title="Edit comment">(Edit)</a> </div>
-
- <p>Version 1.0.3 of the plugin can now scan for annotations in the dependencies, too.</p>
-
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=568#respond" onclick="return addComment.moveForm("div-comment-568", "568", "respond", "34")">Reply</a> </div>
- </div>
- </li><!-- #comment-## -->
- </ul><!-- .children -->
- </li><!-- #comment-## -->
- </ul><!-- .children -->
- </li><!-- #comment-## -->
- <li class="comment odd alt thread-even depth-1" id="comment-286">
- <div class="comment-body" id="div-comment-286">
- <div class="comment-author vcard">
- <cite class="fn">Pedro</cite> <span class="says">says:</span> </div>
-
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-286">
- August 7, 2013 at 18:54</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=286" title="Edit comment">(Edit)</a> </div>
-
- <p>Following my previous question, here is the debug info</p>
- <p>[DEBUG] Dependency: /Users/pmarques/.m2/repository/org/springframework/security/spring-security-acl/3.1.4.RELEASE/spring-security-acl-3.1.4.RELEASE.jar<br>
- [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/atomikos-util/3.6.5/atomikos-util-3.6.5.jar<br>
- [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-api/3.6.5/transactions-api-3.6.5.jar<br>
- [DEBUG] Dependency: /Users/pmarques/.m2/repository/javax/transaction/transaction-api/1.1/transaction-api-1.1.jar<br>
- [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-jdbc-deprecated/3.6.5/transactions-jdbc-deprecated-3.6.5.jar<br>
- [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-jdbc/3.6.5/transactions-jdbc-3.6.5.jar<br>
- [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-jta/3.6.5/transactions-jta-3.6.5.jar<br>
- [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions/3.6.5/transactions-3.6.5.jar<br>
- [DEBUG] Dependency: /Users/pmarques/.m2/repository/org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0.1/geronimo-jta_1.0.1B_spec-1.0.1.jar<br>
- [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-jms-deprecated/3.6.5/transactions-jms-deprecated-3.6.5.jar<br>
- [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-jms/3.6.5/transactions-jms-3.6.5.jar<br>
- [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-hibernate3/3.6.5/transactions-hibernate3-3.6.5.jar<br>
- [INFO] Scanning directory /target/classes for annotated classes…</p>
-
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=286#respond" onclick="return addComment.moveForm("div-comment-286", "286", "respond", "34")">Reply</a> </div>
- </div>
- </li><!-- #comment-## -->
- <li class="comment even thread-odd thread-alt depth-1 parent" id="comment-285">
- <div class="comment-body" id="div-comment-285">
- <div class="comment-author vcard">
- <cite class="fn">Pedro</cite> <span class="says">says:</span> </div>
-
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-285">
- August 7, 2013 at 18:49</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=285" title="Edit comment">(Edit)</a> </div>
-
- <p>Hi,</p>
- <p>I have the following problem.<br>
- The project that I use to test (and use the plugin) has the annotated classes as a dependency.<br>
- I am getting the error:<br>
- No annotated classes found in directory /target/classes</p>
- <p>Shouldn’t the plugin scan all the dependencies also?</p>
- <p>Thanks,<br>
- Pedro.</p>
-
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=285#respond" onclick="return addComment.moveForm("div-comment-285", "285", "respond", "34")">Reply</a> </div>
- </div>
- <ul class="children">
- <li class="comment byuser comment-author-kai bypostauthor odd alt depth-2 parent" id="comment-287">
- <div class="comment-body" id="div-comment-287">
- <div class="comment-author vcard">
- <cite class="fn"><a class="url" href="http://juplo.de" rel="external nofollow">Kai Moritz</a></cite> <span class="says">says:</span> </div>
-
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-287">
- August 7, 2013 at 19:12</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=287" title="Edit comment">(Edit)</a> </div>
-
- <p>Hi Pedro,</p>
- <p>I think, that your observation is right.<br>
- But otherwise, dependencies should only be scanned if requested, because automatic scanning of the dependencies might lead to errors in other situations.</p>
- <p>If you can make your project available to me (for example via github, or simply by mailing zipped version), I would add a configuration-parameter to enable/disable dependency-scanning and upload the refined plugin to central.</p>
- <p>Regards,</p>
- <p>Kai Moritz</p>
-
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=287#respond" onclick="return addComment.moveForm("div-comment-287", "287", "respond", "34")">Reply</a> </div>
- </div>
- <ul class="children">
- <li class="comment byuser comment-author-kai bypostauthor even depth-3" id="comment-426">
- <div class="comment-body" id="div-comment-426">
- <div class="comment-author vcard">
- <cite class="fn"><a class="url" href="http://juplo.de" rel="external nofollow">Kai Moritz</a></cite> <span class="says">says:</span> </div>
-
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-426">
- October 18, 2013 at 02:52</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=426" title="Edit comment">(Edit)</a> </div>
-
- <p>The <a href="/hibernate4-maven-plugin-1-0-3-released/" rel="nofollow" title="Open the release-notes">new version 1.0.3</a> of the plugin adds support for annotated classes in dependencies!</p>
-
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=426#respond" onclick="return addComment.moveForm("div-comment-426", "426", "respond", "34")">Reply</a> </div>
- </div>
- </li><!-- #comment-## -->
- </ul><!-- .children -->
- </li><!-- #comment-## -->
- </ul><!-- .children -->
- </li><!-- #comment-## -->
- <li class="comment odd alt thread-even depth-1 parent" id="comment-276">
- <div class="comment-body" id="div-comment-276">
- <div class="comment-author vcard">
- <cite class="fn"><a class="url" href="http://bidlogix.com" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-commentauthor', 'http://bidlogix.com']);" rel="external nofollow">mike</a></cite> <span class="says">says:</span> </div>
-
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-276">
- July 30, 2013 at 12:57</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=276" title="Edit comment">(Edit)</a> </div>
-
- <p>Hello,</p>
- <p>I’m upgrading from hibernate3 to to hibernate4 and have moved from the hibernate3-maven-plugin to this version. I haven’t undertaken (and don’t want to just yet) the big job of changing my hbm mapping files to annotations.</p>
- <p>As far as I can see this is a show stopper for using your nice plugin. Can you please confirm if this is the case and whether you are planning to add support for scanning for hbm files?</p>
- <p>Many thanks,</p>
- <p>Mike Cohen.</p>
-
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=276#respond" onclick="return addComment.moveForm("div-comment-276", "276", "respond", "34")">Reply</a> </div>
- </div>
- <ul class="children">
- <li class="comment byuser comment-author-tortenheber even depth-2" id="comment-277">
- <div class="comment-body" id="div-comment-277">
- <div class="comment-author vcard">
- <cite class="fn">tortenheber</cite> <span class="says">says:</span> </div>
-
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-277">
- July 31, 2013 at 23:18</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=277" title="Edit comment">(Edit)</a> </div>
-
- <p>Hello Mike,</p>
- <p>I added the requested feature in the SNAPSHOT-version.<br>
- It would be nice, if you could test, if the new feature works, because I have no example project by hand, that still uses hibernate-mapping via XML.</p>
- <p>You can download an actual build here:</p>
- <p><a href="https://oss.sonatype.org/content/repositories/snapshots//de/juplo/hibernate4-maven-plugin/1.0.2-SNAPSHOT/" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-comment', 'http://oss.sonatype.org']);" rel="nofollow">https://oss.sonatype.org/content/repositories/snapshots//de/juplo/hibernate4-maven-plugin/1.0.2-SNAPSHOT/</a></p>
- <p>or build it by yourself from the sources.<br>
- The feature is documented here:</p>
- <p><a href="http://juplo.de/hibernate4-maven-plugin-1.0.2-SNAPSHOT/export-mojo.html" rel="nofollow">http://juplo.de/hibernate4-maven-plugin-1.0.2-SNAPSHOT/export-mojo.html</a></p>
- <p>Best regards</p>
- <p>kai</p>
-
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=277#respond" onclick="return addComment.moveForm("div-comment-277", "277", "respond", "34")">Reply</a> </div>
- </div>
- </li><!-- #comment-## -->
- </ul><!-- .children -->
- </li><!-- #comment-## -->
- <li class="comment odd alt thread-odd thread-alt depth-1 parent" id="comment-50">
- <div class="comment-body" id="div-comment-50">
- <div class="comment-author vcard">
- <cite class="fn">Victor</cite> <span class="says">says:</span> </div>
-
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-50">
- February 22, 2013 at 15:28</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=50" title="Edit comment">(Edit)</a> </div>
-
- <p>Hey I have modified your code to support envers and generate auditing tables, if you want I can send you a patch. Thanks!</p>
-
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=50#respond" onclick="return addComment.moveForm("div-comment-50", "50", "respond", "34")">Reply</a> </div>
- </div>
- <ul class="children">
- <li class="comment even depth-2 parent" id="comment-51">
- <div class="comment-body" id="div-comment-51">
- <div class="comment-author vcard">
- <cite class="fn">admin</cite> <span class="says">says:</span> </div>
-
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-51">
- February 22, 2013 at 19:54</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=51" title="Edit comment">(Edit)</a> </div>
-
- <p>Your welcom.<br>
- Send it!</p>
-
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=51#respond" onclick="return addComment.moveForm("div-comment-51", "51", "respond", "34")">Reply</a> </div>
- </div>
- <ul class="children">
- <li class="comment odd alt depth-3 parent" id="comment-54">
- <div class="comment-body" id="div-comment-54">
- <div class="comment-author vcard">
- <cite class="fn">Victor</cite> <span class="says">says:</span> </div>
-
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-54">
- February 25, 2013 at 15:28</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=54" title="Edit comment">(Edit)</a> </div>
-
- <p>Where to? Is there a github repo?</p>
-
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=54#respond" onclick="return addComment.moveForm("div-comment-54", "54", "respond", "34")">Reply</a> </div>
- </div>
- <ul class="children">
- <li class="comment even depth-4" id="comment-55">
- <div class="comment-body" id="div-comment-55">
- <div class="comment-author vcard">
- <cite class="fn">admin</cite> <span class="says">says:</span> </div>
-
- <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-55">
- February 25, 2013 at 20:05</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=55" title="Edit comment">(Edit)</a> </div>
-
- <p>There is a private git-Repository.<br>
- <a href="http://juplo.de/hibernate4-maven-plugin/source-repository.html" rel="nofollow">Check the project-documentation!</a></p>
- <p>You can <a href="http://juplo.de/hibernate4-maven-plugin/team-list.html" rel="nofollow">send me</a> a patch or a pull-request to <a href="mailto:kai@juplo.de">kai@juplo.de</a></p>
-
- <div class="reply">
- <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=55#respond" onclick="return addComment.moveForm("div-comment-55", "55", "respond", "34")">Reply</a> </div>
- </div>
- </li><!-- #comment-## -->
- </ul><!-- .children -->
- </li><!-- #comment-## -->
- </ul><!-- .children -->
- </li><!-- #comment-## -->
- </ul><!-- .children -->
- </li><!-- #comment-## -->
- </ol>
-
- <div class="navigation">
- <div class="alignleft"></div>
- <div class="alignright"></div>
- </div>
-
-
- <div id="respond">
-
- <h3>Leave a Reply</h3>
-
- <div id="cancel-comment-reply">
- <small><a href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#respond" id="cancel-comment-reply-link" rel="nofollow" style="display:none;">Click here to cancel reply.</a></small>
- </div>
-
-
- <form action="http://juplo.de/wp-comments-post.php" id="commentform" method="post">
-
-
- <p>Logged in as <a href="http://juplo.de/wp-admin/profile.php">Kai Moritz</a>. <a href="http://juplo.de/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fjuplo.de%2Fhibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations%2F&_wpnonce=09e5cb501d" title="Log out of this account">Log out »</a></p>
-
-
- <!--<p><small><strong>XHTML:</strong> You can use these tags: <code><a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> </code></small></p>-->
-
- <p><textarea cols="58" id="comment" name="comment" rows="10" tabindex="4"></textarea></p>
-
- <p><input id="submit" name="submit" tabindex="5" type="submit" value="Submit Comment">
- <input id="comment_post_ID" name="comment_post_ID" type="hidden" value="34">
- <input id="comment_parent" name="comment_parent" type="hidden" value="0">
- </p>
- <input id="_wp_unfiltered_html_comment_disabled" name="_wp_unfiltered_html_comment_disabled" type="hidden" value="2cfe5768bb"><script>(function() {
- if (window === window.parent) {
- document.getElementById('_wp_unfiltered_html_comment_disabled').name = '_wp_unfiltered_html_comment';
- }
- })();</script>
- <p style="display: none;"><input id="akismet_comment_nonce" name="akismet_comment_nonce" type="hidden" value="18eb674233"></p>
- </form>
- </div>
- </article>
-<aside class="marginalcontent">
- <div class="widget-area" id="secondary" role="complementary">
- <aside class="widget" id="archives">
- <h1 class="widget-title">Archives</h1>
- <ul>
- <li><a href="http://juplo.de/2013/10/" title="October 2013">October 2013</a></li>
- <li><a href="http://juplo.de/2013/08/" title="August 2013">August 2013</a></li>
- <li><a href="http://juplo.de/2013/01/" title="January 2013">January 2013</a></li>
- <li><a href="http://juplo.de/2012/11/" title="November 2012">November 2012</a></li>
- </ul>
- </aside>
- <aside class="widget" id="categories">
- <h1 class="widget-title">Most Used Categories</h1>
- <ul>
- <li class="cat-item cat-item-4"><a href="http://juplo.de/category/java/" title="View all posts filed under Java">Java</a> (6)</li>
- <li class="cat-item cat-item-6"><a href="http://juplo.de/category/hibernate/" title="View all posts filed under Hibernate">Hibernate</a> (5)</li>
- <li class="cat-item cat-item-8"><a href="http://juplo.de/category/maven/" title="View all posts filed under Maven">Maven</a> (5)</li>
- <li class="cat-item cat-item-9"><a href="http://juplo.de/category/jpa/" title="View all posts filed under JPA">JPA</a> (1)</li>
- <li class="cat-item cat-item-10"><a href="http://juplo.de/category/appengine/" title="View all posts filed under appengine">appengine</a> (1)</li>
- <li class="cat-item cat-item-11"><a href="http://juplo.de/category/oauth2/" title="View all posts filed under oauth2">oauth2</a> (1)</li>
- </ul>
- </aside>
- <aside class="widget widget_search" id="search">
- <h1 class="widget-title">Search</h1>
- <form action="http://juplo.de/" class="searchform" id="searchform" method="get" role="search">
- <div>
- <label class="screen-reader-text" for="s">Search for:</label>
- <input id="s" name="s" type="text" value="">
- <input id="searchsubmit" type="submit" value="Search">
- </div>
- </form>
- </aside>
- </div><!-- #secondary .widget-area -->
- <div class="widget-area" id="tertiary" role="supplementary">
- </div><!-- #tertiary .widget-area -->
- </aside>
+++ /dev/null
----
-title: Archiv - 2021
-linkTitle: 2021
-layout: year
----
+++ /dev/null
----
-_edit_last: "2"
-author: kai
-categories:
- - demos
- - explained
- - java
- - kafka
- - spring
- - spring-boot
-classic-editor-remember: classic-editor
-date: "2021-02-05T17:59:38+00:00"
-guid: http://juplo.de/?p=1201
-parent_post_id: null
-post_id: "1201"
-title: 'Implementing The Outbox-Pattern With Kafka - Part 0: The example'
-url: /implementing-the-outbox-pattern-with-kafka-part-0-the-example/
-
----
-_This article is part of a Blog-Series_
-
-Based on a [very simple example-project](/implementing-the-outbox-pattern-with-kafka-part-0-the-example/)
-we will implemnt the [Outbox-Pattern](https://microservices.io/patterns/data/transactional-outbox.html) with [Kafka](https://kafka.apache.org/quickstart).
-
-- Part 0: The Example-Project
-- [Part 1: Writing In The Outbox-Table](/implementing-the-outbox-pattern-with-kafka-part-1-the-outbox-table/ "Jump to the explanation what has to be added, to enqueue messages in an outbox for successfully written transactions")
-
-## TL;DR
-
-In this part, a small example-project is introduced, that features a component, which has to inform another component upon every succsessfully completed operation.
-
-## The Plan
-
-In this mini-series I will implement the [Outbox-Pattern](https://microservices.io/patterns/data/transactional-outbox.html)
-as described on Chris Richardson's fabolous website [microservices.io](https://microservices.io/).
-
-The pattern enables you, to send a message as part of a database transaction in a reliable way, effectively turining the writing of the data
-to the database and the sending of the message into an **[atomic operation](https://en.wikipedia.org/wiki/Atomicity_(database_systems))**:
-either both operations are successful or neither.
-
-The pattern is well known and implementing it with [Kafka](https://kafka.apache.org/quickstart) looks like an easy straight forward job at first glance.
-However, there are many obstacles that easily lead to an incomplete or incorrect implementation.
-In this blog-series, we will circumnavigate these obstacles together step by step.
-
-## The Example Project
-
-To illustrate our implementation, we will use a simple example-project.
-It mimics a part of the registration process for an web application:
-a (very!) simplistic service takes registration orders for new users.
-
-- Successfull registration requests will return a 201 (Created), that carries the URI, under which the data of the newly registered user can be accessed in the `Location`-header:
-
-`echo peter | http :8080/users
- HTTP/1.1 201
- Content-Length: 0
- Date: Fri, 05 Feb 2021 14:44:51 GMT
- Location: http://localhost:8080/users/peter
- `
-- Requests to registrate an already existing user will result in a 400 (Bad Request):
-
-`echo peter | http :8080/users
- HTTP/1.1 400
- Connection: close
- Content-Length: 0
- Date: Fri, 05 Feb 2021 14:44:53 GMT
- `
-- Successfully registrated users can be listed:
- `http :8080/users
- HTTP/1.1 200
- Content-Type: application/json;charset=UTF-8
- Date: Fri, 05 Feb 2021 14:53:59 GMT
- Transfer-Encoding: chunked
- [
- {
- "created": "2021-02-05T10:38:32.301",
- "loggedIn": false,
- "username": "peter"
- },
- ...
- ]
- `
-
-## The Messaging Use-Case
-
-As our messaging use-case imagine, that there has to happen several processes after a successful registration of a new user.
-This may be the generation of an invoice, some business analytics or any other lengthy process that is best carried out asynchronously.
-Hence, we have to generate an event, that informs the responsible services about new registrations.
-
-Obviously, these events should only be generated, if the registration is completed successfully.
-The event must not be fired, if the registration is rejected, because a duplicate username.
-
-On the other hand, the publication of the event must happen reliably, because otherwise, the new might not be charged for the services, we offer...
-
-## The Transaction
-
-The users are stored in a database and the creation of a new user happens in a transaction.
-A "brilliant" colleague came up with the idea, to trigger an `IncorrectResultSizeDataAccessException` to detect duplicate usernames:
-
-`User user = new User(username);
-repository.save(user);
-// Triggers an Exception, if more than one entry is found
-repository.findByUsername(username);
-`
-
-The query for the user by its names triggers an `IncorrectResultSizeDataAccessException`, if more than one entry is found.
-The uncaught exception will mark the transaction for rollback, hence, canceling the requested registration.
-The 400-response is then generated by a corresponding `ExceptionHandler`:
-
-`@ExceptionHandler
-public ResponseEntity incorrectResultSizeDataAccessException(
- IncorrectResultSizeDataAccessException e)
-{
- LOG.info("User already exists!");
- return ResponseEntity.badRequest().build();
-}
-`
-
-Please do not code this at home...
-
-But his weired implementation perfectly illustrates the requirements for our messaging use-case:
-The user is written into the database.
-But the registration is not successfully completed until the transaction is commited.
-If the transaction is rolled back, no message must be send, because no new user was registered.
-
-## Decoupling with Springs EventPublisher
-
-In the example implementation I am using an `EventPublisher` to decouple the business logic from the implementation of the messaging.
-The controller publishes an event, when a new user is registered:
-
-`publisher.publishEvent(new UserEvent(this, usernam));
-`
-
-A listener annotated with `@TransactionalEventListener` receives the events and handles the messaging:
-
-`@TransactionalEventListener
-public void onUserEvent(UserEvent event)
-{
- // Sending the message happens here...
-}
-`
-
-In non-critical use-cases, it might be sufficient to actually send the message to Kafka right here.
-Spring ensures, that the message of the listener is only called, if the transaction completes successfully.
-But in the case of a failure this naive implementation can loose messages.
-If the application crashes, after the transaction has completed, but before the message could be send, the event would be lost.
-
-In the following blog posts, we will step by step implement a solution based on the Outbox-Pattern, that can guarantee Exactly-Once semantics for the send messages.
-
-## May The Source Be With You!
-
-The complete source code of the example-project can be cloned here:
-
-- `git clone /git/demos/spring/data-jdbc`
-- `git clone https://github.com/juplo/demos-spring-data-jdbc.git`
-
-It includes a [Setup for Docker Compose](https://github.com/juplo/demos-spring-data-jdbc/blob/master/docker-compose.yml), that can be run without compiling
-the project. And a runnable [README.sh](https://github.com/juplo/demos-spring-data-jdbc/blob/master/README.sh), that compiles and run the application and illustrates the example.
+++ /dev/null
----
-title: "Blog"
-weight: 10
----
-<main class="maincontent">
- <article class="post-140 post type-post status-publish format-standard hentry category-jetty category-less category-maven category-wro4j" id="post-140">
- <header class="entry-header">
- <h2 class="entry-title"><a href="http://juplo.de/combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/" rel="bookmark" title="Permalink to Combining jetty-maven-plugin and wro4j-maven-plugin for Dynamic Reloading of LESS-Resources">Combining jetty-maven-plugin and wro4j-maven-plugin for Dynamic Reloading of LESS-Resources</a></h2>
- <div class="entry-meta">
- Posted on <a href="http://juplo.de/combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/" rel="bookmark" title="12:58"><time class="entry-date" datetime="2013-12-06T12:58:17+00:00">December 6, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
- </div><!-- .entry-meta -->
- </header><!-- .entry-header -->
- <div class="entry-content">
- </div><!-- .entry-content -->
- <footer class="entry-meta">
- <span class="cat-links">
- Posted in <a href="http://juplo.de/category/jetty/" rel="category tag" title="View all posts in Jetty">Jetty</a>, <a href="http://juplo.de/category/css/" rel="category tag" title="View all posts in less">less</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>, <a href="http://juplo.de/category/wro4j/" rel="category tag" title="View all posts in wro4j">wro4j</a>
- </span>
- </footer><!-- .entry-meta -->
- </article><!-- #post-140 -->
- <article class="post-114 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-114">
- <header class="entry-header">
- <h2 class="entry-title"><a href="http://juplo.de/hibernate4-maven-plugin-1-0-3-released/" rel="bookmark" title="Permalink to hibernate4-maven-plugin 1.0.3 released!">hibernate4-maven-plugin 1.0.3 released!</a></h2>
- <div class="entry-meta">
- Posted on <a href="http://juplo.de/hibernate4-maven-plugin-1-0-3-released/" rel="bookmark" title="02:46"><time class="entry-date" datetime="2013-10-18T02:46:23+00:00">October 18, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
- </div><!-- .entry-meta -->
- </header><!-- .entry-header -->
- <div class="entry-content">
- </div><!-- .entry-content -->
- <footer class="entry-meta">
- <span class="cat-links">
- Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>
- </span>
- </footer><!-- .entry-meta -->
- </article><!-- #post-114 -->
- <article class="post-97 post type-post status-publish format-standard hentry category-appengine category-java category-maven category-oauth2" id="post-97">
- <header class="entry-header">
- <h2 class="entry-title"><a href="http://juplo.de/log-out-from-wrong-account-with-maven-appengine-plugin/" rel="bookmark" title="Permalink to Log out from wrong Account with maven-appengine-plugin">Log out from wrong Account with maven-appengine-plugin</a></h2>
- <div class="entry-meta">
- Posted on <a href="http://juplo.de/log-out-from-wrong-account-with-maven-appengine-plugin/" rel="bookmark" title="11:33"><time class="entry-date" datetime="2013-10-03T11:33:56+00:00">October 3, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
- </div><!-- .entry-meta -->
- </header><!-- .entry-header -->
- <div class="entry-content">
- </div><!-- .entry-content -->
- <footer class="entry-meta">
- <span class="cat-links">
- Posted in <a href="http://juplo.de/category/appengine/" rel="category tag" title="View all posts in appengine">appengine</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>, <a href="http://juplo.de/category/oauth2/" rel="category tag" title="View all posts in oauth2">oauth2</a>
- </span>
- </footer><!-- .entry-meta -->
- </article><!-- #post-97 -->
- <article class="post-90 post type-post status-publish format-standard hentry category-hibernate category-java category-jpa" id="post-90">
- <header class="entry-header">
- <h2 class="entry-title"><a href="http://juplo.de/bidirectional-association-with-elementcollection/" rel="bookmark" title="Permalink to Bidirectional Association with @ElementCollection">Bidirectional Association with @ElementCollection</a></h2>
- <div class="entry-meta">
- Posted on <a href="http://juplo.de/bidirectional-association-with-elementcollection/" rel="bookmark" title="11:11"><time class="entry-date" datetime="2013-10-03T11:11:36+00:00">October 3, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
- </div><!-- .entry-meta -->
- </header><!-- .entry-header -->
- <div class="entry-content">
- </div><!-- .entry-content -->
- <footer class="entry-meta">
- <span class="cat-links">
- Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/jpa/" rel="category tag" title="View all posts in JPA">JPA</a>
- </span>
- </footer><!-- .entry-meta -->
- </article><!-- #post-90 -->
- <article class="post-75 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-75">
- <header class="entry-header">
- s <h2 class="entry-title"><a href="http://juplo.de/hibernate4-maven-plugin-1-0-2-release/" rel="bookmark" title="Permalink to hibernate4-maven-plugin 1.0.2 released!">hibernate4-maven-plugin 1.0.2 released!</a></h2>
- <div class="entry-meta">
- Posted on <a href="http://juplo.de/hibernate4-maven-plugin-1-0-2-release/" rel="bookmark" title="02:06"><time class="entry-date" datetime="2013-08-02T02:06:08+00:00">August 2, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
- </div><!-- .entry-meta -->
- </header><!-- .entry-header -->
- <div class="entry-content">
- </div><!-- .entry-content -->
- <footer class="entry-meta">
- <span class="cat-links">
- Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>
- </span>
- </footer><!-- .entry-meta -->
- </article><!-- #post-75 -->
- <article class="post-64 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-64">
- <header class="entry-header">
- <h2 class="entry-title"><a href="http://juplo.de/hibernate4-maven-plugin-1-0-1-released/" rel="bookmark" title="Permalink to hibernate4-maven-plugin 1.0.1 released!">hibernate4-maven-plugin 1.0.1 released!</a></h2>
- <div class="entry-meta">
- Posted on <a href="http://juplo.de/hibernate4-maven-plugin-1-0-1-released/" rel="bookmark" title="01:10"><time class="entry-date" datetime="2013-01-16T01:10:59+00:00">January 16, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
- </div><!-- .entry-meta -->
- </header><!-- .entry-header -->
- <div class="entry-content">
- </div><!-- .entry-content -->
- <footer class="entry-meta">
- <span class="cat-links">
- Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>
- </span>
- </footer><!-- .entry-meta -->
- </article><!-- #post-64 -->
- <article class="post-55 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-55">
- <header class="entry-header">
- <h2 class="entry-title"><a href="http://juplo.de/hibernate4-maven-plugin-1-0-released/" rel="bookmark" title="Permalink to hibernate4-maven-plugin 1.0 released!">hibernate4-maven-plugin 1.0 released!</a></h2>
- <div class="entry-meta">
- Posted on <a href="http://juplo.de/hibernate4-maven-plugin-1-0-released/" rel="bookmark" title="22:04"><time class="entry-date" datetime="2012-11-29T22:04:25+00:00">November 29, 2012</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
- </div><!-- .entry-meta -->
- </header><!-- .entry-header -->
- <div class="entry-content">
- </div><!-- .entry-content -->
- <footer class="entry-meta">
- <span class="cat-links">
- Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>
- </span>
- </footer><!-- .entry-meta -->
- </article><!-- #post-55 -->
- <article class="post-34 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-34">
- <header class="entry-header">
- <h2 class="entry-title"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/" rel="bookmark" title="Permalink to hibernate4-maven-plugin">hibernate4-maven-plugin</a></h2>
- <div class="entry-meta">
- Posted on <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/" rel="bookmark" title="19:29"><time class="entry-date" datetime="2012-11-28T19:29:12+00:00">November 28, 2012</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
- </div><!-- .entry-meta -->
- </header><!-- .entry-header -->
- <div class="entry-content">
- </div><!-- .entry-content -->
- <footer class="entry-meta">
- <span class="cat-links">
- Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>
- </span>
- </footer><!-- .entry-meta -->
- </article><!-- #post-34 -->
- </main>
-<div class="marginalcontent">
- <div class="widget-area" id="secondary" role="complementary">
- <aside class="widget" id="archives">
- <h1 class="widget-title">Archives</h1>
- <ul>
- <li><a href="http://juplo.de/2013/10/" title="October 2013">October 2013</a></li>
- <li><a href="http://juplo.de/2013/08/" title="August 2013">August 2013</a></li>
- <li><a href="http://juplo.de/2013/01/" title="January 2013">January 2013</a></li>
- <li><a href="http://juplo.de/2012/11/" title="November 2012">November 2012</a></li>
- </ul>
- </aside>
- <aside class="widget" id="categories">
- <h1 class="widget-title">Most Used Categories</h1>
- <ul>
- <li class="cat-item cat-item-4"><a href="http://juplo.de/category/java/" title="View all posts filed under Java">Java</a> (6)</li>
- <li class="cat-item cat-item-6"><a href="http://juplo.de/category/hibernate/" title="View all posts filed under Hibernate">Hibernate</a> (5)</li>
- <li class="cat-item cat-item-8"><a href="http://juplo.de/category/maven/" title="View all posts filed under Maven">Maven</a> (5)</li>
- <li class="cat-item cat-item-9"><a href="http://juplo.de/category/jpa/" title="View all posts filed under JPA">JPA</a> (1)</li>
- <li class="cat-item cat-item-10"><a href="http://juplo.de/category/appengine/" title="View all posts filed under appengine">appengine</a> (1)</li>
- <li class="cat-item cat-item-11"><a href="http://juplo.de/category/oauth2/" title="View all posts filed under oauth2">oauth2</a> (1)</li>
- </ul>
- </aside>
- <aside class="widget widget_search" id="search">
- <h1 class="widget-title">Search</h1>
- <form action="http://juplo.de/" class="searchform" id="searchform" method="get" role="search">
- <div>
- <label class="screen-reader-text" for="s">Search for:</label>
- <input id="s" name="s" type="text" value="">
- <input id="searchsubmit" type="submit" value="Search">
- </div>
- </form>
- </aside>
- </div><!-- #secondary .widget-area -->
- <div class="widget-area" id="tertiary" role="supplementary">
- </div><!-- #tertiary .widget-area -->
- </div>
+++ /dev/null
----
-title: "Frameset to Bypass Same-Origin-Policy"
-url: /devel.html
----
+++ /dev/null
----
-title: "Projects"
-url: /projects.html
-outputs:
- - html
-weight: 20
----
-<main class="maincontent">
- <h1>Projects - Potemkinsche Dörfer!</h1>
- <ul>
- <li><a href="potemkin/fix-swf/overview.html" th:href="@{/potemkin/fix-swf/overview.html}">Fix SWF</a></li>
- <li><a href="potemkin/html-experimente.html" th:href="@{/potemkin/html-experimente.html}">HTML-Experimente</a></li>
- <li><a href="potemkin/accelerator.html" th:href="@{/potemkin/accelerator.html}">accelerator</a></li>
- <li><a href="potemkin/typo.html" th:href="@{/potemkin/typo.html}">Typography</a></li>
- </ul>
- </main>
+++ /dev/null
----
-title: "accelerator - Overview"
-url: /potemkin/accelerator.html
----
-<main class="maincontent">
- <h1>Accelerator - DUMMY</h1>
- </main>
+++ /dev/null
----
-title: "Fix SWF"
-url: /potemkin/fix-swf/overview.html
-build:
- render: local
-outputs:
- - html
----
-<main class="maincontent">
- <h1>Overviw - DUMMY</h1>
- </main>
+++ /dev/null
----
-title: "Fix SWF - Getting Started"
-linkTitle: "Getting Started"
-url: /potemkin/fix-swf/getting-started.html
----
-<main class="maincontent">
- <h1>Getting Started - DUMMY</h1>
- </main>
+++ /dev/null
----
-title: "Fix SWF - Overview"
-url: /potemkin/fix-swf/overview.html
----
-<main class="maincontent">
- <h1>Overviw - DUMMY</h1>
- </main>
+++ /dev/null
----
-title: "HTML-Experimente"
----
-<div>
- <h1>HTML-Elemente / spezielle Seiten</h1>
- <h2>Die Templates</h2>
- <ul>
- <li><a href="templates/layout.html">Layout</a> - Das Layout für juplo.de</li>
- <li><a href="templates/fragments.html">Fragmente</a> Auf mehreren Seiten verwendete Inhalte</li>
- <li><a href="error/404.html">404-Fehlerseite</a></li>
- <li><a href="error/5xx.html">5xx-Fehlerseite</a></li>
- <li><a href="templates/testlab.html">Testlab</a> Testseite für die Skalierung auf untrschiedliche Seitenbreiten</li>
- </ul>
- </div>
-<article class="maincontent">
- <header><h1>HTML-Elemente / spezielle Seiten</h1></header>
- <h2>Seiten zum Testen gerenderter Inhalte</h2>
- <ul>
- <li><a href="html-experimente/formulare.html" th:href="@{/potemkin/html-experimente/formulare.html}">Formulare</a></li>
- <li><a href="html-experimente/symbole.html" th:href="@{/potemkin/html-experimente/symbole.html}">Symbol-Font</a></li>
- <li><a href="error/404.html" th:href="@{/404.html}">404-Template</a></li>
- <li><a href="html-experimente/gibts-ja-gar-nicht.html" th:href="@{/potemkin/html-experimente/gibts-ja-gar-nicht.html}">404-Fehlerseite</a></li>
- <li><a href="error/5xx.html" th:href="@{/error.html}">Template für andere Fehler</a></li>
- <li><a href="html-experimente/error.html" th:href="@{/potemkin/html-experimente/error.html}">Fehlerseite für andere Fehler</a></li>
- </ul>
- <h2>Layout-Grenzfälle</h2>
- <ul>
- <li><a href="html-experimente/fast-leer-mit-menü.html" th:href="@{/potemkin/html-experimente/fast-leer-mit-menü.html}">Fast leere Seite mit Menü</a></li>
- <li><a href="html-experimente/fast-leer-mit-menü-und-marginalinhalt.html" th:href="@{/potemkin/html-experimente/fast-leer-mit-menü-und-marginalinhalt.html}">Fast leere Seite mit Menü und Marginal-Inhalt</a></li>
- <li><a href="html-experimente/fast-leer-kein-menü.html" th:href="@{/potemkin/html-experimente/fast-leer-kein-menü.html}">Fast leere Seite ohne Menü</a></li>
- <li><a href="html-experimente/fast-leer-kein-menü-aber-marginalinhalt.html" th:href="@{/potemkin/html-experimente/fast-leer-kein-menü-aber-marginalinhalt.html}">Fast leere Seite ohne Menü aber mit Marginal-Inhalt</a></li>
- <li><a href="html-experimente/fast-leer-einspaltig.html" th:href="@{/potemkin/html-experimente/fast-leer-einspaltig.html}">Fast leere einspaltige Seite</a></li>
- <li><a href="html-experimente/fast-leer-einspaltig-mit-marginalinhalt.html" th:href="@{/potemkin/html-experimente/fast-leer-einspaltig-mit-marginalinhalt.html}">Fast leere einspaltige Seite mit Marginal-Inhalt</a></li>
- <li><a href="html-experimente/breadcrumb.html" th:href="@{/potemkin/html-experimente/breadcrumb.html}">Seite mit sehr langem Breadcrumb</a></li>
- </ul>
- <h2>Layout-Variationen</h2>
- <ul>
- <li><a href="html-experimente/kein-layout.html" th:href="@{/potemkin/html-experimente/kein-layout.html}">Alle Stylings deaktiviert</a></li>
- <li><a href="html-experimente/basis-layout.html" th:href="@{/potemkin/html-experimente/basis-layout.html}">Nur das Basis-Layout</a></li>
- <li><a href="html-experimente/druck-layout.html" th:href="@{/potemkin/html-experimente/druck-layout.html}">Die für den Ausdruck angepasste Ansicht</a></li>
- <li><a href="html-experimente/tiny.html" th:href="@{/potemkin/html-experimente/tiny.html}">Layout für sehr kleine Bildschirmgrößen</a></li>
- <li><a href="html-experimente/phone.html" th:href="@{/potemkin/html-experimente/phone.html}">Layout für Smartphones</a></li>
- <li><a href="html-experimente/tablet.html" th:href="@{/potemkin/html-experimente/tablet.html}">Layout für Tablets</a></li>
- </ul>
- <h2>Testseiten für einzelne Seiten-Bestandteile</h2>
- <ul>
- <li><a href="html-experimente/seitenaufteilung.html" th:href="@{/potemkin/html-experimente/seitenaufteilung.html}">Nur das Basis-Layout und die Seitenaufteilung</a></li>
- <li><a href="html-experimente/seitenkopf.html" th:href="@{/potemkin/html-experimente/seitenkopf.html}">Nur das Basis-Layout und der Seitenkopf</a></li>
- </ul>
- <h2>Anderer Krams...</h2>
- <ul>
- <li><a href="html-experimente/testlab.html" th:href="@{/potemkin/html-experimente/testlab.html}">Seite mit Breiten-Markierungen für den Tests von Media-Queries (Beispiel)</a></li>
- </ul>
- </article>
+++ /dev/null
----
-title: "HTML-Experimente - Basis-Layout"
-linkTitle: "Basis-Layout"
-url: /potemkin/html-experimente/basis-layout.html
----
-<main class="maincontent">
- <header><h1>Nur das Basis-Layout</h1></header>
- <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
- </main>
-<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
- MARGINAL-CONTENT
- </aside>
+++ /dev/null
----
-title: "HTML-Experimente - Langer Breadcrumb"
-linkTitle: "Langer Breadcrumb"
-url: /potemkin/html-experimente/breadcrumb.html
----
-<ol id="crumbs">
- <li class="b"><a class="b" href="../index.html" th:href="@{/index.html}">Home</a></li>
- <li class="b"><a class="b" href="../projects.html" th:href="@{/projects.html}">Projects</a></li>
- <li class="b"><a class="b" href="html-experimente.html" th:href="@{/potemkin/html-experimente.html}">HTML-Experimente</a></li>
- <li class="b"><strong class="b">Dies ist ein Seite mit einem unendlich langen Breadcrumb-Eintrag der bestimmt nicht in den vorgesehenen Platz passt</strong></li>
- </ol>
-<article class="maincontent">
- <header><h1>Seite mit sehr langem Breadcrumb</h1></header>
- <p>Eine Seite mit einem extrem langen Breadcrumb...</p>
- </article>
+++ /dev/null
----
-title: "HTML-Experimente - Druck-Layout"
-linkTitle: "Druck-Layout"
-url: /potemkin/html-experimente/druck-layout.html
----
-<main class="maincontent">
- <header><h1>Die für den Ausdruck angepasste Ansicht</h1></header>
- <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
- </main>
-<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
- MARGINAL-CONTENT
- </aside>
+++ /dev/null
----
-title: "This Page Will Raise An Error"
-url: /potemkin/html-experimente/error.html
----
-<p>This page will raise an error, because the <strong><code>uri</code></strong> is set to an unknown value...</p>
+++ /dev/null
----
-title: "HTML-Experimente - Fast leere einspaltige Seite mit Marginalinhalt"
-linkTitle: "Fast leere einspaltige Seite mit Marginalinhalt"
-url: /potemkin/html-experimente/fast-leer-einspaltig-mit-marginalinhalt.html
----
-<nav id="navigation">
- <hr class="n">
- <a class="hide" href="#top" title="Show Content">Jump back to the top of the page</a>
- <h1 class="nav">Navigation</h1>
- <h2 class="nav menu">Section-Menu</h2>
- <ul class="cf" id="menu">
- <li class="m blog"><a class="m" href="../blog/" th:href="@{/blog/}">Blog</a></li>
- <li class="m projects"><a class="m selected" href="../projects.html" th:href="@{/projects.html}">Projects</a></li>
- <li class="m about"><a class="m" href="../about.html" th:href="@{/about.html}">About</a></li>
- </ul>
- </nav>
-<article class="maincontent">
- <header><h1>Fast leere einspaltige Seite mit Marginalinhalt</h1></header>
- <p><strong>KAPUTT:</strong> siehe Erklärung im Commit</p>
- </article>
-<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
- MARGINAL-CONTENT
- </aside>
+++ /dev/null
----
-title: "HTML-Experimente - Fast leere einspaltige Seite"
-linkTitle: "Fast leere einspaltige Seite"
-url: /potemkin/html-experimente/fast-leer-einspaltig.html
----
-<nav id="navigation">
- <hr class="n">
- <a class="hide" href="#top" title="Show Content">Jump back to the top of the page</a>
- <h1 class="nav">Navigation</h1>
- <h2 class="nav menu">Section-Menu</h2>
- <ul class="cf" id="menu">
- <li class="m blog"><a class="m" href="../blog/" th:href="@{/blog/}">Blog</a></li>
- <li class="m projects"><a class="m selected" href="../projects.html" th:href="@{/projects.html}">Projects</a></li>
- <li class="m about"><a class="m" href="../about.html" th:href="@{/about.html}">About</a></li>
- </ul>
- </nav>
-<article class="maincontent">
- <header><h1>Fast leere einspaltige Seite</h1></header>
- <p><strong>KAPUTT:</strong> siehe Erklärung im Commit</p>
- </article>
+++ /dev/null
----
-title: "HTML-Experimente - Fast leere Seite ohne Menü aber mit Marginalspalte"
-linkTitle: "Fast leere Seite ohne Menü aber mit Marginalspalte"
-url: /potemkin/html-experimente/fast-leer-kein-menü-aber-marginalinhalt.html
----
-<nav id="navigation">
- <hr class="n">
- <a class="hide" href="#top" title="Show Content">Jump back to the top of the page</a>
- <h1 class="nav">Navigation</h1>
- <h2 class="nav menu">Section-Menu</h2>
- <ul class="cf" id="menu">
- <li class="m blog"><a class="m" href="../blog/" th:href="@{/blog/}">Blog</a></li>
- <li class="m projects"><a class="m selected" href="../projects.html" th:href="@{/projects.html}">Projects</a></li>
- <li class="m about"><a class="m" href="../about.html" th:href="@{/about.html}">About</a></li>
- </ul>
- </nav>
-<article class="maincontent">
- <header><h1>Fast leere Seite ohne Menü aber mit Marginalinhalt</h1></header>
- <p>Ein ganz bischen Text...</p>
- </article>
-<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
- MARGINAL-CONTENT
- </aside>
+++ /dev/null
----
-title: "HTML-Experimente - Fast leere Seite ohne Menü"
-linkTitle: "Fast leere Seite ohne Menü"
-url: /potemkin/html-experimente/fast-leer-kein-menü.html
----
-<nav id="navigation">
- <hr class="n">
- <a class="hide" href="#top" title="Show Content">Jump back to the top of the page</a>
- <h1 class="nav">Navigation</h1>
- <h2 class="nav menu">Section-Menu</h2>
- <ul class="cf" id="menu">
- <li class="m blog"><a class="m" href="../blog/" th:href="@{/blog/}">Blog</a></li>
- <li class="m projects"><a class="m selected" href="../projects.html" th:href="@{/projects.html}">Projects</a></li>
- <li class="m about"><a class="m" href="../about.html" th:href="@{/about.html}">About</a></li>
- </ul>
- </nav>
-<article class="maincontent">
- <header><h1>Fast leere Seite ohne Menü</h1></header>
- <p>Ein ganz bischen Text...</p>
- </article>
+++ /dev/null
----
-title: "HTML-Experimente - Fast leere Seite mit Menü und Marginalinhalt"
-linkTitle: "Fast leere Seite mit Menü und Marginalinhalt"
-url: /potemkin/html-experimente/fast-leer-mit-menü-und-marginalinhalt.html
----
-<article class="maincontent">
- <header><h1>Fast leere Seite mit Menü und Marginalinhalt</h1></header>
- <p>Ein ganz bischen Text...</p>
- </article>
-<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
- MARGINAL-CONTENT
- </aside>
+++ /dev/null
----
-title: "HTML-Experimente - Fast leere Seite mit Menü"
-linkTitle: "Fast leere Seite mit Menü"
-url: /potemkin/html-experimente/fast-leer-mit-menü.html
----
-<article class="maincontent">
- <header><h1>Fast leere Seite mit Menü</h1></header>
- <p>Ein ganz bischen Text...</p>
- </article>
+++ /dev/null
----
-title: "HTML-Experimente - Formulare"
-linkTitle: "Formulare"
-url: /potemkin/html-experimente/formulare.html
----
-<article class="maincontent">
- <header><h1>Formulare</h1></header>
- <form action="#" class="form" method="get">
- <h2 class="f">Anzeigetext</h2>
- <div class="f textarea">
- <label class="f info" for="textarea_01">Geben Sie hier Ihren Anzeigentext ein.</label>
- <textarea class="f error" cols="50" id="textarea_01" rows="10">Eingegebener Text</textarea>
- <span class="f error"><span class="e">< </span><strong class="e">Fehler:</strong> Es wurde kein Text für die Anzeige eingegeben!</span>
- </div>
- </form>
- <form action="#" class="form" method="get">
- <h2 class="f">Textformatierung</h2>
- <fieldset class="f radiobutton cf">
- <legend class="f info">
- Die zusätzlichen Gestaltungsoptionen sind nur für das Magazin wählbar.<br>
- Online erscheint die Anzeige als normaler Fließtext.
- </legend>
- <hr class="f">
- <div class="col2">
- <div class="f">
- <input class="f" id="radio_tbox_01" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_01">normaler Fließtext</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_02" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_02">Text zentriert</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_03" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_03">Text fett, Negativdruck</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_04" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_04">Text fett</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_05" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_05">Text fett und rot</label>
- </div>
- </div>
- <div class="col2">
- <div class="f">
- <input class="f" id="radio_tbox_06" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_06">Text fett, Anzeige blau hinterlegt</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_07" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_07">Text fett, Anzeige gelb hinterlegt</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_08" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_08">Anzeige schwarz eingerahmt</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_09" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_09">Anzeige rot eingerahmt</label>
- </div>
- </div>
- </fieldset>
- </form>
- <form action="#" class="form" method="get">
- <h2 class="f">Einspaltige Radiobuttons...</h2>
- <fieldset class="f radiobutton">
- <div class="f">
- <input class="f" id="radio_tbox_b01" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_b01">Dies ist eine etwas länglichere Beschreibung der auswählbaren Option</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_b02" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_b02">Option X</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_b03" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_b03">Dies ist eine sehr, sehr lange Beschreibung der auswählbaren Option - so lang, dass sie am Ende hoffentlich umbricht...</label>
- </div>
- </fieldset>
- <hr class="f">
- <div class="f submit">
- <input class="f" type="submit" value="> zur Übersicht">
- <input class="f left" type="submit" value="< zurück">
- <input class="f" type="submit" value="> weiter">
- </div>
- </form>
- <form action="#" class="form" method="get">
- <h2 class="f">Bild</h2>
- <fieldset class="f checkbox">
- <legend class="f">
- Du kannst Deiner Anzeige ein Bild hinzufügen.
- Das Bild erscheint nur online.
- Im Magazin erscheint die Kleinanzeige mit Hinweis auf das Onlinebild.
- </legend>
- <hr class="f">
- <div class="f">
- <input class="f" id="checkbox_tbox_01" name="checkbox_tbox" type="checkbox">
- <label class="f" for="checkbox_tbox_01">Ich möchte ein Bild zu dieser Anzeige hinzufügen</label>
- </div>
- <div class="f">
- <input class="f" id="checkbox_tbox_02" name="checkbox_tbox" type="checkbox">
- <label class="f" for="checkbox_tbox_02">Ich habe die AGB für das Hochladen von Bildern gelesen und akzeptiere diese</label>
- </div>
- </fieldset>
- </form>
- <form action="#" class="form" method="get">
- <h2 class="f">Alleinstehende Checkbox</h2>
- <div class="f checkbox">
- <input class="f" id="checkbox_tbox_03" name="checkbox_tbox" type="checkbox">
- <label class="f" for="checkbox_tbox_03">Ich möchte ein Bild zu dieser Anzeige hinzufügen</label>
- </div>
- </form>
- <form action="#" class="form" method="get">
- <h2 class="f">Kundendaten</h2>
- <p class="f required">
- <strong class="r">Pflichtfelder</strong> sind mit einem
- <strong class="r symbol">*</strong> markiert.
- </p>
- <div class="f text required">
- <label class="f" for="text_tbox_01"><span class="required">* </span>Nachname</label>
- <input class="f" id="text_tbox_01" type="text" value="Mustermann">
- </div>
- <div class="f text required">
- <label class="f" for="text_tbox_02">Vorname</label>
- <input class="f" id="text_tbox_02" type="text" value="Max">
- </div>
- <div class="f select required">
- <label class="f" for="text_tbox_03"><span class="required">* </span>Ort</label>
- <select class="f" id="text_tbox_03">
- <option>Dortmund</option>
- <option>Bochum</option>
- <option>Essen</option>
- <option>Mönchengladbach</option>
- <option>Oberhausen</option>
- <option>Castrop-Rauxel</option>
- <option>Düsseldorf</option>
- </select>
- </div>
- <div class="f text required">
- <label class="f" for="text_tbox_04"><span class="required">* </span>Straße/Hausnr.</label>
- <input class="f error" id="text_tbox_04" type="text" value="">
- <span class="f error"><span class="e">< </span><strong class="e">Fehler:</strong> Dies ist ein Pflichtfeld!</span>
- </div>
- <div class="f text required">
- <label class="f" for="text_tbox_05"><span class="required">* </span>Postleitzahl</label>
- <input class="f" id="text_tbox_05" type="text" value="">
- </div>
- <div class="f text required">
- <label class="f" for="text_tbox_06">Telefon</label>
- <input class="f" id="text_tbox_06" type="text" value="">
- </div>
- <hr class="f">
- <div class="f submit">
- <input class="f" type="submit" value="> weiter">
- </div>
- </form>
- <form action="#" class="form" method="get">
- <h2 class="f">Anzeige regionalisieren</h2>
- <p class="f">
- Indem Du Deine Kleinanzeige einer Stadt zuordnest, können Interessenten
- diese online leichter finden, wenn sie nur nach Kleinanzeigen aus
- bestimmten Städten suchen.
- Du kannst auch keine Stadt zuordnen, dann wird die Kleinanzeige von
- diesen Interessenten aber auch nicht gefunden.
- </p>
- <hr class="f">
- <div class="f text">
- <label class="f" for="city">Stadt</label>
- <input class="f" id="city" type="text">
- <p class="f info">
- Das Feld leer lassen, wenn die Anzeige nicht regionalisiert werden soll.
- </p>
- </div>
- </form>
- <form action="#" class="form" method="get">
- <h2 class="f">Ein Passwort-Eingabe-Feld</h2>
- <div class="f text required">
- <label class="f" for="text_tbox_05"><span class="required">* </span>Passwort</label>
- <input class="f" id="text_tbox_05" type="password" value="t">
- </div>
- </form>
- <form action="#" class="form" method="get">
- <h2 class="f">Lade das Bild hoch</h2>
- <p class="f info">
- Du kannst ein Bild im JPEG- oder PNG-Format hochladen.
- Das Bild darf nicht größer als 8 MByte sein.
- </p>
- <div class="f file required">
- <label class="f" for="file_tbox_01"><span class="required">* </span>Bild</label>
- <input class="f" id="file_tbox_01" type="file">
- </div>
- <hr class="f">
- <div class="f submit">
- <input class="f" type="submit" value="> Doch kein Bild">
- <input class="f" type="submit" value="> Bild hochladen">
- </div>
- </form>
- <div class="form">
- <h2 class="f">Antworten</h2>
- <p class="f required">
- <strong class="r">Pflichtfelder</strong> sind mit einem
- <strong class="r symbol">*</strong> markiert.
- </p>
- <div class="f text required">
- <label class="f" for="replyTo"><span class="required">*</span> Antwort-Adresse</label>
- <input class="f" id="replyTo" name="replyTo" tabindex="1" type="text" value="">
- </div>
- <div class="f text required">
- <label class="f" for="replyTo"><span class="required">*</span> Adresse wiederholen</label>
- <input class="f" id="replyToRepeated" name="replyToRepeated" tabindex="2" type="text" value="">
- </div>
- <div class="f text required">
- <label class="f" for="subject"><span class="required">*</span> Betreff</label>
- <input class="f" id="subject" name="subject" tabindex="3" type="text" value="">
- </div>
- <div class="f textarea required">
- <label class="f" for="text"><span class="required">*</span> Nachricht</label>
- <textarea class="f" cols="20" id="text" name="text" rows="15" tabindex="4"></textarea>
- </div>
- <div class="f checkbox">
- <input checked="checked" class="f" id="attachment1" name="attachment" tabindex="4" type="checkbox" value="true"><input name="_attachment" type="hidden" value="on">
- <label class="f" for="attachment">Ich möchte eine Datei an die E-Mail anhängen.</label>
- </div>
- <div class="f checkbox">
- <input checked="checked" class="f" id="copy1" name="copy" tabindex="5" type="checkbox" value="true"><input name="_copy" type="hidden" value="on">
- <label class="f" for="copy">Ich möchte eine Kopie der Nachricht zugesendet bekommen.</label>
- </div>
- </div>
- <div class="form cf">
- <div class="col2 left">
- <h2 class="f">Weiter mit Anmeldung</h2>
- <div class="f text">
- <label class="f" for="username">Benutzername</label>
- <input class="f" id="username" name="username" tabindex="6" type="text">
- </div>
- <div class="f text">
- <label class="f" for="password">Passwort</label>
- <input class="f" id="password" name="password" tabindex="7" type="password">
- </div>
- </div>
- <div class="col2 right">
- <h2 class="f">Weiter ohne Anmeldung</h2>
- <!-- <a href="/kleinanzeigen/37431/lust+.html" title="Zu schwer? Hier klicken um das Bild zu wechseln!"><img src="/img/captcha.jpg" alt="Captcha" width="120" height="60" /></a> -->
- <div class="f captcha cf">
- <span class="f">Was steht da?</span>
- <img alt="Captcha" class="f" height="60" src="/img/captcha.jpg" width="120">
- </div>
- <div class="f text">
- <label class="f" for="captcha">Lösung</label>
- <input class="f" id="captcha" name="captcha" tabindex="8" type="text">
- </div>
- </div>
- </div>
- </article>
+++ /dev/null
----
-title: "HTML-Experimente - Kein Layout"
-linkTitle: "Kein Layout"
-url: /potemkin/html-experimente/kein-layout.html
----
-<main class="maincontent">
- <header><h1>Alle Stylings deaktiviert</h1></header>
- <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
- </main>
-<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
- MARGINAL-CONTENT
- </aside>
+++ /dev/null
----
-title: "HTML-Experimente - Layout PHONE"
-linkTitle: "Layout PHONE"
-url: /potemkin/html-experimente/phone.html
----
-<main class="maincontent">
- <header><h1>Layout für Smartphones</h1></header>
- <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
- </main>
-<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
- MARGINAL-CONTENT
- </aside>
+++ /dev/null
----
-title: "HTML-Experimente - Basis-Layout & Seitenaufteilung"
-linkTitle: "Basis-Layout & Seitenaufteilung"
-url: /potemkin/html-experimente/seitenaufteilung.html
----
-<main class="maincontent">
- <header><h1>Nur das Basis-Layout und die Seitenaufteiltung</h1></header>
- <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
- </main>
-<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
- MARGINAL-CONTENT
- </aside>
+++ /dev/null
----
-title: "HTML-Experimente - Basis-Layout & Seitenkopf"
-linkTitle: "Basis-Layout & Seitenkopf"
-url: /potemkin/html-experimente/seitenkopf.html
----
-<main class="maincontent">
- <header><h1>Nur das Basis-Layout und der Seitenkopf</h1></header>
- <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
- </main>
-<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
- MARGINAL-CONTENT
- </aside>
+++ /dev/null
----
-title: "HTML-Experimente - Symbol-Font"
-linkTitle: "Symbol-Font"
-url: /potemkin/html-experimente/symbole.html
----
-<article class="maincontent">
- <header><h1>Symbol-Font</h1></header>
- <h2>100%</h2>
- <div class="symbols">
- <span class="e600"></span>
- <span class="e601"></span>
- <span class="e602"></span>
- <span class="e603"></span>
- <span class="e604"></span>
- <span class="e605"></span>
- <span class="e606"></span>
- <span class="e607"></span>
- <span class="e608"></span>
- <span class="e609"></span>
- <span class="e60a"></span>
- <span class="e60b"></span>
- <span class="e60c"></span>
- <span class="e60d"></span>
- <span class="e60e"></span>
- <span class="e60f"></span>
- <span class="e610"></span>
- <span class="e611"></span>
- <span class="e612"></span>
- <span class="e613"></span>
- <span class="e614"></span>
- <span class="e615"></span>
- <span class="e616"></span>
- <span class="e617"></span>
- <span class="e618"></span>
- <span class="e619"></span>
- <span class="e61a"></span>
- <span class="e61b"></span>
- <span class="e61c"></span>
- <span class="e61d"></span>
- <span class="e61e"></span>
- <span class="e61f"></span>
- <span class="e620"></span>
- <span class="e621"></span>
- <span class="e622"></span>
- <span class="e623"></span>
- <span class="e624"></span>
- <span class="e625"></span>
- <span class="e626"></span>
- <span class="e627"></span>
- <span class="e628"></span>
- <span class="e629"></span>
- <span class="e62a"></span>
- <span class="e62b"></span>
- <span class="e62c"></span>
- <span class="e62d"></span>
- <span class="e62e"></span>
- <span class="e62f"></span>
- <span class="e630"></span>
- <span class="e631"></span>
- <span class="e632"></span>
- <span class="e633"></span>
- <span class="e634"></span>
- <span class="e635"></span>
- <span class="e636"></span>
- <span class="e637"></span>
- <span class="e638"></span>
- <span class="e639"></span>
- <span class="e63a"></span>
- <span class="e63b"></span>
- <span class="e63c"></span>
- <span class="e63d"></span>
- <span class="e63e"></span>
- <span class="e63f"></span>
- <span class="e640"></span>
- <span class="e641"></span>
- <span class="e642"></span>
- <span class="e643"></span>
- <span class="e644"></span>
- <span class="e645"></span>
- <span class="e646"></span>
- <span class="e647"></span>
- <span class="e648"></span>
- <span class="e649"></span>
- <span class="e64a"></span>
- <span class="e64b"></span>
- </div>
- <h2>200%</h2>
- <div class="symbols" style="font-size: 200%; line-height: 1.5em">
- <span class="e600"></span>
- <span class="e601"></span>
- <span class="e602"></span>
- <span class="e603"></span>
- <span class="e604"></span>
- <span class="e605"></span>
- <span class="e606"></span>
- <span class="e607"></span>
- <span class="e608"></span>
- <span class="e609"></span>
- <span class="e60a"></span>
- <span class="e60b"></span>
- <span class="e60c"></span>
- <span class="e60d"></span>
- <span class="e60e"></span>
- <span class="e60f"></span>
- <span class="e610"></span>
- <span class="e611"></span>
- <span class="e612"></span>
- <span class="e613"></span>
- <span class="e614"></span>
- <span class="e615"></span>
- <span class="e616"></span>
- <span class="e617"></span>
- <span class="e618"></span>
- <span class="e619"></span>
- <span class="e61a"></span>
- <span class="e61b"></span>
- <span class="e61c"></span>
- <span class="e61d"></span>
- <span class="e61e"></span>
- <span class="e61f"></span>
- <span class="e620"></span>
- <span class="e621"></span>
- <span class="e622"></span>
- <span class="e623"></span>
- <span class="e624"></span>
- <span class="e625"></span>
- <span class="e626"></span>
- <span class="e627"></span>
- <span class="e628"></span>
- <span class="e629"></span>
- <span class="e62a"></span>
- <span class="e62b"></span>
- <span class="e62c"></span>
- <span class="e62d"></span>
- <span class="e62e"></span>
- <span class="e62f"></span>
- <span class="e630"></span>
- <span class="e631"></span>
- <span class="e632"></span>
- <span class="e633"></span>
- <span class="e634"></span>
- <span class="e635"></span>
- <span class="e636"></span>
- <span class="e637"></span>
- <span class="e638"></span>
- <span class="e639"></span>
- <span class="e63a"></span>
- <span class="e63b"></span>
- <span class="e63c"></span>
- <span class="e63d"></span>
- <span class="e63e"></span>
- <span class="e63f"></span>
- <span class="e640"></span>
- <span class="e641"></span>
- <span class="e642"></span>
- <span class="e643"></span>
- <span class="e644"></span>
- <span class="e645"></span>
- <span class="e646"></span>
- <span class="e647"></span>
- <span class="e648"></span>
- <span class="e649"></span>
- <span class="e64a"></span>
- <span class="e64b"></span>
- </div>
- <h2>300%</h2>
- <div class="symbols" style="font-size: 300%; line-height: 1.5em">
- <span class="e600"></span>
- <span class="e601"></span>
- <span class="e602"></span>
- <span class="e603"></span>
- <span class="e604"></span>
- <span class="e605"></span>
- <span class="e606"></span>
- <span class="e607"></span>
- <span class="e608"></span>
- <span class="e609"></span>
- <span class="e60a"></span>
- <span class="e60b"></span>
- <span class="e60c"></span>
- <span class="e60d"></span>
- <span class="e60e"></span>
- <span class="e60f"></span>
- <span class="e610"></span>
- <span class="e611"></span>
- <span class="e612"></span>
- <span class="e613"></span>
- <span class="e614"></span>
- <span class="e615"></span>
- <span class="e616"></span>
- <span class="e617"></span>
- <span class="e618"></span>
- <span class="e619"></span>
- <span class="e61a"></span>
- <span class="e61b"></span>
- <span class="e61c"></span>
- <span class="e61d"></span>
- <span class="e61e"></span>
- <span class="e61f"></span>
- <span class="e620"></span>
- <span class="e621"></span>
- <span class="e622"></span>
- <span class="e623"></span>
- <span class="e624"></span>
- <span class="e625"></span>
- <span class="e626"></span>
- <span class="e627"></span>
- <span class="e628"></span>
- <span class="e629"></span>
- <span class="e62a"></span>
- <span class="e62b"></span>
- <span class="e62c"></span>
- <span class="e62d"></span>
- <span class="e62e"></span>
- <span class="e62f"></span>
- <span class="e630"></span>
- <span class="e631"></span>
- <span class="e632"></span>
- <span class="e633"></span>
- <span class="e634"></span>
- <span class="e635"></span>
- <span class="e636"></span>
- <span class="e637"></span>
- <span class="e638"></span>
- <span class="e639"></span>
- <span class="e63a"></span>
- <span class="e63b"></span>
- <span class="e63c"></span>
- <span class="e63d"></span>
- <span class="e63e"></span>
- <span class="e63f"></span>
- <span class="e640"></span>
- <span class="e641"></span>
- <span class="e642"></span>
- <span class="e643"></span>
- <span class="e644"></span>
- <span class="e645"></span>
- <span class="e646"></span>
- <span class="e647"></span>
- <span class="e648"></span>
- <span class="e649"></span>
- <span class="e64a"></span>
- <span class="e64b"></span>
- </div>
- <h2>400%</h2>
- <div class="symbols" style="font-size: 400%; line-height: 1.5em">
- <span class="e600"></span>
- <span class="e601"></span>
- <span class="e602"></span>
- <span class="e603"></span>
- <span class="e604"></span>
- <span class="e605"></span>
- <span class="e606"></span>
- <span class="e607"></span>
- <span class="e608"></span>
- <span class="e609"></span>
- <span class="e60a"></span>
- <span class="e60b"></span>
- <span class="e60c"></span>
- <span class="e60d"></span>
- <span class="e60e"></span>
- <span class="e60f"></span>
- <span class="e610"></span>
- <span class="e611"></span>
- <span class="e612"></span>
- <span class="e613"></span>
- <span class="e614"></span>
- <span class="e615"></span>
- <span class="e616"></span>
- <span class="e617"></span>
- <span class="e618"></span>
- <span class="e619"></span>
- <span class="e61a"></span>
- <span class="e61b"></span>
- <span class="e61c"></span>
- <span class="e61d"></span>
- <span class="e61e"></span>
- <span class="e61f"></span>
- <span class="e620"></span>
- <span class="e621"></span>
- <span class="e622"></span>
- <span class="e623"></span>
- <span class="e624"></span>
- <span class="e625"></span>
- <span class="e626"></span>
- <span class="e627"></span>
- <span class="e628"></span>
- <span class="e629"></span>
- <span class="e62a"></span>
- <span class="e62b"></span>
- <span class="e62c"></span>
- <span class="e62d"></span>
- <span class="e62e"></span>
- <span class="e62f"></span>
- <span class="e630"></span>
- <span class="e631"></span>
- <span class="e632"></span>
- <span class="e633"></span>
- <span class="e634"></span>
- <span class="e635"></span>
- <span class="e636"></span>
- <span class="e637"></span>
- <span class="e638"></span>
- <span class="e639"></span>
- <span class="e63a"></span>
- <span class="e63b"></span>
- <span class="e63c"></span>
- <span class="e63d"></span>
- <span class="e63e"></span>
- <span class="e63f"></span>
- <span class="e640"></span>
- <span class="e641"></span>
- <span class="e642"></span>
- <span class="e643"></span>
- <span class="e644"></span>
- <span class="e645"></span>
- <span class="e646"></span>
- <span class="e647"></span>
- <span class="e648"></span>
- <span class="e649"></span>
- <span class="e64a"></span>
- <span class="e64b"></span>
- </div>
- <h2>500%</h2>
- <div class="symbols" style="font-size: 500%; line-height: 1.5em">
- <span class="e600"></span>
- <span class="e601"></span>
- <span class="e602"></span>
- <span class="e603"></span>
- <span class="e604"></span>
- <span class="e605"></span>
- <span class="e606"></span>
- <span class="e607"></span>
- <span class="e608"></span>
- <span class="e609"></span>
- <span class="e60a"></span>
- <span class="e60b"></span>
- <span class="e60c"></span>
- <span class="e60d"></span>
- <span class="e60e"></span>
- <span class="e60f"></span>
- <span class="e610"></span>
- <span class="e611"></span>
- <span class="e612"></span>
- <span class="e613"></span>
- <span class="e614"></span>
- <span class="e615"></span>
- <span class="e616"></span>
- <span class="e617"></span>
- <span class="e618"></span>
- <span class="e619"></span>
- <span class="e61a"></span>
- <span class="e61b"></span>
- <span class="e61c"></span>
- <span class="e61d"></span>
- <span class="e61e"></span>
- <span class="e61f"></span>
- <span class="e620"></span>
- <span class="e621"></span>
- <span class="e622"></span>
- <span class="e623"></span>
- <span class="e624"></span>
- <span class="e625"></span>
- <span class="e626"></span>
- <span class="e627"></span>
- <span class="e628"></span>
- <span class="e629"></span>
- <span class="e62a"></span>
- <span class="e62b"></span>
- <span class="e62c"></span>
- <span class="e62d"></span>
- <span class="e62e"></span>
- <span class="e62f"></span>
- <span class="e630"></span>
- <span class="e631"></span>
- <span class="e632"></span>
- <span class="e633"></span>
- <span class="e634"></span>
- <span class="e635"></span>
- <span class="e636"></span>
- <span class="e637"></span>
- <span class="e638"></span>
- <span class="e639"></span>
- <span class="e63a"></span>
- <span class="e63b"></span>
- <span class="e63c"></span>
- <span class="e63d"></span>
- <span class="e63e"></span>
- <span class="e63f"></span>
- <span class="e640"></span>
- <span class="e641"></span>
- <span class="e642"></span>
- <span class="e643"></span>
- <span class="e644"></span>
- <span class="e645"></span>
- <span class="e646"></span>
- <span class="e647"></span>
- <span class="e648"></span>
- <span class="e649"></span>
- <span class="e64a"></span>
- <span class="e64b"></span>
- </div>
- </article>
+++ /dev/null
----
-title: "HTML-Experimente - Layout TABLET"
-linkTitle: "Layout TABLET"
-url: /potemkin/html-experimente/tablet.html
----
-<main class="maincontent">
- <header><h1>Layout für Tablets</h1></header>
- <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
- </main>
-<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
- MARGINAL-CONTENT
- </aside>
+++ /dev/null
----
-title: "HTML-Experimente - Media-Query-Test: BEISPIEL"
-linktTitle: "Media-Query-Test: BEISPIEL"
-url: /potemkin/html-experimente/testlab.html
----
-<div class="content">
- <form action="#" class="testlab form" method="get">
- <h2 class="f">Anzeigetext</h2>
- <div class="f textarea">
- <label class="f info" for="textarea_01">Geben Sie hier Ihren Anzeigentext ein.</label>
- <textarea class="f error" cols="50" id="textarea_01" rows="10">Eingegebener Text</textarea>
- <span class="f error"><span class="e">< </span><strong class="e">Fehler:</strong> Es wurde kein Text für die Anzeige eingegeben!</span>
- </div>
- </form>
- <form action="#" class="testlab form" method="get">
- <h2 class="f">Textformatierung</h2>
- <fieldset class="f radiobutton cf">
- <legend class="f info">
- Die zusätzlichen Gestaltungsoptionen sind nur für das Magazin wählbar.<br>
- Online erscheint die Anzeige als normaler Fließtext.
- </legend>
- <hr class="f">
- <div class="col2">
- <div class="f">
- <input class="f" id="radio_tbox_01" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_01">normaler Fließtext</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_02" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_02">Text zentriert</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_03" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_03">Text fett, Negativdruck</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_04" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_04">Text fett</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_05" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_05">Text fett und rot</label>
- </div>
- </div>
- <div class="col2">
- <div class="f">
- <input class="f" id="radio_tbox_06" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_06">Text fett, Anzeige blau hinterlegt</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_07" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_07">Text fett, Anzeige gelb hinterlegt</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_08" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_08">Anzeige schwarz eingerahmt</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_09" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_09">Anzeige rot eingerahmt</label>
- </div>
- </div>
- </fieldset>
- </form>
- <form action="#" class="testlab form" method="get">
- <h2 class="f">Einspaltige Radiobuttons...</h2>
- <fieldset class="f radiobutton">
- <div class="f">
- <input class="f" id="radio_tbox_b01" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_b01">Dies ist eine etwas länglichere Beschreibung der auswählbaren Option</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_b02" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_b02">Option X</label>
- </div>
- <div class="f">
- <input class="f" id="radio_tbox_b03" name="radio_tbox" type="radio">
- <label class="f" for="radio_tbox_b03">Dies ist eine sehr, sehr lange Beschreibung der auswählbaren Option - so lang, dass sie am Ende hoffentlich umbricht...</label>
- </div>
- </fieldset>
- <hr class="f">
- <div class="f submit">
- <input class="f" type="submit" value="> zur Übersicht">
- <input class="f left" type="submit" value="< zurück">
- <input class="f" type="submit" value="> weiter">
- </div>
- </form>
- <form action="#" class="testlab form" method="get">
- <h2 class="f">Bild</h2>
- <fieldset class="f checkbox">
- <legend class="f">
- Du kannst Deiner Anzeige ein Bild hinzufügen.
- Das Bild erscheint nur online.
- Im Magazin erscheint die Kleinanzeige mit Hinweis auf das Onlinebild.
- </legend>
- <hr class="f">
- <div class="f">
- <input class="f" id="checkbox_tbox_01" name="checkbox_tbox" type="checkbox">
- <label class="f" for="checkbox_tbox_01">Ich möchte ein Bild zu dieser Anzeige hinzufügen</label>
- </div>
- <div class="f">
- <input class="f" id="checkbox_tbox_02" name="checkbox_tbox" type="checkbox">
- <label class="f" for="checkbox_tbox_02">Ich habe die AGB für das Hochladen von Bildern gelesen und akzeptiere diese</label>
- </div>
- </fieldset>
- </form>
- <form action="#" class="testlab form" method="get">
- <h2 class="f">Alleinstehende Checkbox</h2>
- <div class="f checkbox">
- <input class="f" id="checkbox_tbox_03" name="checkbox_tbox" type="checkbox">
- <label class="f" for="checkbox_tbox_03">Ich möchte ein Bild zu dieser Anzeige hinzufügen</label>
- </div>
- </form>
- <form action="#" class="testlab form" method="get">
- <h2 class="f">Kundendaten</h2>
- <p class="f required">
- <strong class="r">Pflichtfelder</strong> sind mit einem
- <strong class="r symbol">*</strong> markiert.
- </p>
- <div class="f text required">
- <label class="f" for="text_tbox_01"><span class="required">* </span>Nachname</label>
- <input class="f" id="text_tbox_01" type="text" value="Mustermann">
- </div>
- <div class="f text required">
- <label class="f" for="text_tbox_02">Vorname</label>
- <input class="f" id="text_tbox_02" type="text" value="Max">
- </div>
- <div class="f select required">
- <label class="f" for="text_tbox_03"><span class="required">* </span>Ort</label>
- <select class="f" id="text_tbox_03">
- <option>Dortmund</option>
- <option>Bochum</option>
- <option>Essen</option>
- <option>Mönchengladbach</option>
- <option>Oberhausen</option>
- <option>Castrop-Rauxel</option>
- <option>Düsseldorf</option>
- </select>
- </div>
- <div class="f text required">
- <label class="f" for="text_tbox_04"><span class="required">* </span>Straße/Hausnr.</label>
- <input class="f error" id="text_tbox_04" type="text" value="">
- <span class="f error"><span class="e">< </span><strong class="e">Fehler:</strong> Dies ist ein Pflichtfeld!</span>
- </div>
- <div class="f text required">
- <label class="f" for="text_tbox_05"><span class="required">* </span>Postleitzahl</label>
- <input class="f" id="text_tbox_05" type="text" value="">
- </div>
- <div class="f text required">
- <label class="f" for="text_tbox_06">Telefon</label>
- <input class="f" id="text_tbox_06" type="text" value="">
- </div>
- <hr class="f">
- <div class="f submit">
- <input class="f" type="submit" value="> weiter">
- </div>
- </form>
- <form action="#" class="testlab form" method="get">
- <h2 class="f">Anzeige regionalisieren</h2>
- <p class="f">
- Indem Du Deine Kleinanzeige einer Stadt zuordnest, können Interessenten
- diese online leichter finden, wenn sie nur nach Kleinanzeigen aus
- bestimmten Städten suchen.
- Du kannst auch keine Stadt zuordnen, dann wird die Kleinanzeige von
- diesen Interessenten aber auch nicht gefunden.
- </p>
- <hr class="f">
- <div class="f text">
- <label class="f" for="city">Stadt</label>
- <input class="f" id="city" type="text">
- <p class="f info">
- Das Feld leer lassen, wenn die Anzeige nicht regionalisiert werden soll.
- </p>
- </div>
- </form>
- <form action="#" class="testlab form" method="get">
- <h2 class="f">Ein Passwort-Eingabe-Feld</h2>
- <div class="f text required">
- <label class="f" for="text_tbox_05"><span class="required">* </span>Passwort</label>
- <input class="f" id="text_tbox_05" type="password" value="t">
- </div>
- </form>
- <form action="#" class="testlab form" method="get">
- <h2 class="f">Lade das Bild hoch</h2>
- <p class="f info">
- Du kannst ein Bild im JPEG- oder PNG-Format hochladen.
- Das Bild darf nicht größer als 8 MByte sein.
- </p>
- <div class="f file required">
- <label class="f" for="file_tbox_01"><span class="required">* </span>Bild</label>
- <input class="f" id="file_tbox_01" type="file">
- </div>
- <hr class="f">
- <div class="f submit">
- <input class="f" type="submit" value="> Doch kein Bild">
- <input class="f" type="submit" value="> Bild hochladen">
- </div>
- </form>
- <div class="testlab form">
- <h2 class="f">Antworten</h2>
- <p class="f required">
- <strong class="r">Pflichtfelder</strong> sind mit einem
- <strong class="r symbol">*</strong> markiert.
- </p>
- <div class="f text required">
- <label class="f" for="replyTo"><span class="required">*</span> Antwort-Adresse</label>
- <input class="f" id="replyTo" name="replyTo" tabindex="1" type="text" value="">
- </div>
- <div class="f text required">
- <label class="f" for="replyTo"><span class="required">*</span> Adresse wiederholen</label>
- <input class="f" id="replyToRepeated" name="replyToRepeated" tabindex="2" type="text" value="">
- </div>
- <div class="f text required">
- <label class="f" for="subject"><span class="required">*</span> Betreff</label>
- <input class="f" id="subject" name="subject" tabindex="3" type="text" value="">
- </div>
- <div class="f textarea required">
- <label class="f" for="text"><span class="required">*</span> Nachricht</label>
- <textarea class="f" cols="20" id="text" name="text" rows="15" tabindex="4"></textarea>
- </div>
- <div class="f checkbox">
- <input checked="checked" class="f" id="attachment1" name="attachment" tabindex="4" type="checkbox" value="true"><input name="_attachment" type="hidden" value="on">
- <label class="f" for="attachment">Ich möchte eine Datei an die E-Mail anhängen.</label>
- </div>
- <div class="f checkbox">
- <input checked="checked" class="f" id="copy1" name="copy" tabindex="5" type="checkbox" value="true"><input name="_copy" type="hidden" value="on">
- <label class="f" for="copy">Ich möchte eine Kopie der Nachricht zugesendet bekommen.</label>
- </div>
- </div>
- <div class="testlab form cf">
- <div class="col2 left">
- <h2 class="f">Weiter mit Anmeldung</h2>
- <div class="f text">
- <label class="f" for="username">Benutzername</label>
- <input class="f" id="username" name="username" tabindex="6" type="text">
- </div>
- <div class="f text">
- <label class="f" for="password">Passwort</label>
- <input class="f" id="password" name="password" tabindex="7" type="password">
- </div>
- </div>
- <div class="col2 right">
- <h2 class="f">Weiter ohne Anmeldung</h2>
- <!-- <a href="/kleinanzeigen/37431/lust+.html" title="Zu schwer? Hier klicken um das Bild zu wechseln!"><img src="/img/captcha.jpg" alt="Captcha" width="120" height="60" /></a> -->
- <div class="f captcha cf">
- <span class="f">Was steht da?</span>
- <img alt="Captcha" class="f" height="60" src="/img/captcha.jpg" width="120">
- </div>
- <div class="f text">
- <label class="f" for="captcha">Lösung</label>
- <input class="f" id="captcha" name="captcha" tabindex="8" type="text">
- </div>
- </div>
- </div>
- </div>
+++ /dev/null
----
-title: "HTML-Experimente - Layout TINY"
-linkTitle: "Layout TINY"
-url: /potemkin/html-experimente/tiny.html
----
-<main class="maincontent">
- <header><h1>Layout für sehr kleine Bildschirmgrößen</h1></header>
- <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
- </main>
-<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
- MARGINAL-CONTENT
- </aside>
+++ /dev/null
----
-title: "Typography"
-url: /potemkin/typo.html
----
-<article class="maincontent">
- <header><h1>Typography</h1></header>
- <p>
- Lorem ipsum dolor <a href="#da">sit amet</a>, consectetur adipisicing elit,
- sed do eiusmod <strong>tempor incididunt</strong> ut labore et dolore
- magna aliqua. Ut enim ad minim veniam, quis nostrud
- <a href="#dort">exercitation</a> ullamco laboris nisi ut aliquip
- <em>ex ea</em> commodo consequat. Duis aute irure dolor in reprehenderit
- in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
- <strong>Excepteur sint <em>occaecat</em> cupidatat non proident</strong>,
- sunt in culpa qui officia deserunt mollit anim id est laborum.
- </p>
- <h2>Ein Link <a href="#link">im Titel</a></h2>
- <p>Ein Link <a href="#link">im Text</a>.</p>
- <h2>Normal / Italic / Bold / Bold+Italic</h2>
- <ul>
- <li>normal</li>
- <li><em>italic</em></li>
- <li><strong>bold</strong></li>
- <li><strong><em>bold italic</em></strong></li>
- </ul>
- <p>
- ÄäÖöÜüß@€¢
- <strong>ÄäÖöÜüß@€¢</strong>
- <em>ÄäÖöÜüß@€¢</em>
- <strong><em>ÄäÖöÜüß@€¢</em></strong>
- </p>
- <h1>
- AÄaäOÖoöuÜuüß@€¢
- <strong>AÄaäOÖoöUÜuüß@€¢</strong>
- <em>AÄaäOÖoöUÜuüß@€¢</em>
- <strong><em>AÄaäOÖoöUÜuüß@€¢</em></strong>
- </h1>
- <h1>H1: Heading</h1>
- <h2>H2: Heading</h2>
- <h3>H3: Heading</h3>
- <h4>H4: Heading</h4>
- <h1>H1: Heading</h1>
- <p>
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
- culpa qui officia deserunt mollit anim id est laborum.
- </p>
- <h2>H2: Heading</h2>
- <p>
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
- culpa qui officia deserunt mollit anim id est laborum.
- </p>
- <h3>H3: Heading</h3>
- <p>
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
- culpa qui officia deserunt mollit anim id est laborum.
- </p>
- <h4>H4: Heading</h4>
- <p>
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
- culpa qui officia deserunt mollit anim id est laborum.
- </p>
- <h1>Preformatted code</h1>
- <p>
- <em>Juplo Branding</em> uses
- <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html" title="Visit prettify's README">google-code-prettify</a> for automatic
- syntax highlighting.
- </p>
- <pre class="prettyprint linenums"><code class="language-xml"><plugin>
- <groupId>ro.isdc.wro4j</groupId>
- <artifactId>wro4j-maven-plugin</artifactId>
- <version>${wro4j.version}</version>
- <configuration>
- <wroManagerFactory>ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory</wroManagerFactory>
- <cssDestinationFolder>${project.build.directory}/${project.build.finalName}/css/</cssDestinationFolder>
- </configuration>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- </executions>
-</plugin>
-</code></pre>
- </article>
--- /dev/null
+---
+title: "Home"
+---
+<ol id="crumbs">
+ <li class="b"><strong class="b">Home</strong></li>
+ </ol>
+<h1 id="logo"><strong class="l"><img alt="juplo" class="l" src="/img/logo.svg"></strong></h1>
+<nav id="navigation">
+ <hr class="n">
+ <a class="hide" href="#top" title="Show Content">Jump back to the top of the page</a>
+ <h1 class="nav">Navigation</h1>
+ <h2 class="nav menu">Section-Menu</h2>
+ <ul class="cf" id="menu">
+ <li class="m blog"><a class="m" href="blog/" th:href="@{/blog/}">Blog</a></li>
+ <li class="m projects"><a class="m" href="projects.html" th:href="@{/projects.html}">Projects</a></li>
+ <li class="m about"><a class="m" href="about.html" th:href="@{/about.html}">About</a></li>
+ </ul>
+ </nav>
+<div>
+ <h1>Startseite</h1>
+ <h2>Die Templates</h2>
+ <ul>
+ <li><a href="templates/layout.html">Layout</a> - Das Layout für juplo.de</li>
+ <li><a href="templates/fragments.html">Fragmente</a> Auf mehreren Seiten verwendete Inhalte</li>
+ <li><a href="error/404.html">404-Fehlerseite</a></li>
+ <li><a href="error/5xx.html">5xx-Fehlerseite</a></li>
+ <li><a href="templates/testlab.html">Testlab</a> Testseite für die Skalierung auf untrschiedliche Seitenbreiten</li>
+ </ul>
+ <h2>Fake-Inhalte</h2>
+ <ul>
+ <li><a href="projects.html">Potemkinsche Dörfer</a> - Beispielseiten zum Testen der gerenderten Menüstruktur</li>
+ <li><a href="potemkin/typo.html">Typografie</a></li>
+ <li><a href="potemkin/html-experimente/formulare.html">Formulare</a></li>
+ <li><a href="potemkin/html-experimente.html">HTML-Experimente</a> - Testseiten für Edge-Cases</li>
+ </ul>
+ </div>
+<main class="maincontent">
+ <div class="pack bg cf">
+ <div class="p right">
+ <h2>Work In Progress…</h2>
+ <p>This page is under heavy construction.</p>
+ <p style="text-align: center"><img alt="Man bashing his head on a computer-keyboard" src="/img/wip.gif"></p>
+ <p>So, please be patiance with us…</p>
+ </div>
+ <div class="p left">
+ <h2>About juplo</h2>
+ <ul>
+ <li><a href="/about.html" title="Visit my about-pag">More about juplo</a></li>
+ <li><a href="/blog" title="(Hopefully) helpful stuff">Blog</a></li>
+ <li><a href="/projects.html" title="All current projects">Projects</a></li>
+ <li><a href="/contact.html" title="All contact-information on a glance">Contact</a></li>
+ </ul>
+ </div>
+ </div>
+ <div class="single">
+ <h1>Hibernate Maven Plugin</h1>
+ <p><strong>A simple Plugin for generating a Database-Schema from Hibernate Mappings</strong></p>
+ <p>hibernate-maven-plugin is a plugin for generating a database-schema from your Hibernate mappings and create or update your database accordingly. Its main usage is to automatically create and populate a test-database for unit-tests in cooperation with the dbunit-maven-plugin.</p>
+ <p><a href="/hibernate-maven-plugin/index.html" title="Visit the plugin-documentation">Learn more...</a></p>
+ </div>
+ </main>
+<aside class="marginalcontent">
+ <div class="widget widget_recent_entries">
+ <h2 class="widgettitle">Recent Posts</h2>
+ <ul>
+ <li><a href="http://juplo.de/show-spring-boot-auto-configuration-report-when-running-via-mvn-spring-boot-run/">Show Spring-Boot Auto-Configuration-Report When Running Via “mvn spring-boot:run”</a></li>
+ <li><a href="http://juplo.de/parsing-json-from-facebooks-graph-api-using-jackson-2-x-and-javas-new-time-api/">Parsing JSON From Facebooks Graph-API Using Jackson 2.x And Java’s New Time-API</a></li>
+ <li><a href="http://juplo.de/problems-deploying-a-spring-boot-app-as-war/">Problems Deploying A Spring-Boot-App As WAR</a></li>
+ <li><a href="http://juplo.de/hibernate-maven-plugin-2-0-0-released/">hibernate-maven-plugin 2.0.0 released!</a></li>
+ <li><a href="http://juplo.de/release-of-a-maven-plugin-to-maven-central-fails-with-error-unknown-tag-goal/">Release Of A Maven-Plugin to Maven Central Fails With “error: unknown tag: goal”</a></li>
+ </ul>
+ </div>
+ </aside>
--- /dev/null
+---
+title: Archiv - 2013
+linkTitle: 2013
+layout: year
+---
--- /dev/null
+---
+categories:
+ - jetty
+ - less
+ - maven
+ - wro4j
+date: "2013-12-06T10:58:17+00:00"
+title: Combining jetty-maven-plugin and wro4j-maven-plugin for Dynamic Reloading of LESS-Resources
+url: /combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/
+---
+<article class="maincontent">
+ <article class="post-140 post type-post status-publish format-standard hentry category-jetty category-less category-maven category-wro4j" id="post-140">
+ <div class="entry-header">
+ <h1 class="entry-title">Combining jetty-maven-plugin and wro4j-maven-plugin for Dynamic Reloading of LESS-Resources</h1>
+ <div class="entry-meta">
+ Posted on <a href="http://juplo.de/combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/" rel="bookmark" title="12:58"><time class="entry-date" datetime="2013-12-06T12:58:17+00:00">December 6, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
+ </div><!-- .entry-meta -->
+ </div><!-- .entry-header -->
+ <div class="entry-content">
+ <p>Ever searched for a simple configuration, that lets you use your <a href="http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://wiki.eclipse.org']);" title="See the documentation for mor information">jetty-maven-plugin</a> as you are used to, while working with <a href="http://www.csscss.org/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.csscss.org']);" title="See LESS CSS documentation for mor informations">LESS</a> to simplify your stylesheets?</p>
+ <p>You cannot do both, use the <a href="http://www.csscss.org/#usage" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.csscss.org']);" title="More about the client-side usage of LESS">Client-side mode</a> of LESS to ease development and use the <a href="https://github.com/marceloverdijk/lesscss-maven-plugin" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://github.com']);" title="Homepage of the official LESS CSS maven plugin">lesscss-maven-plugin</a> to automatically compile the LESS-sources into CSS for production. That does not work, because your stylesheets must be linked in different ways if you are switching between the client-side mode – which is best for development – and the pre-compiled mode – which is best for production. For the client-side mode you need something like:</p>
+ <pre class="prettyprint linenums"> <code class="html">
+ <link rel="stylesheet" type="text/css" href="styles.css" />
+ <script src="less.js" type="text/javascript"></script>
+ </code>
+ </pre>
+ <p>While, for the pre-compiled mode, you want to link to your stylesheets as usual, with:</p>
+ <pre class="prettyprint linenums"> <code class="html">
+ <link rel="stylesheet" type="text/css" href="styles.css" />
+ </code>
+ </pre>
+ <p>While looking for a solution to this dilemma, I stumbled accross <a href="https://code.google.com/p/wro4j/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://code.google.com']);" title="See the documentation of ths wounderfull tool">wro4j</a>. Originally intended, to speed up page-delivery by combining and minimizing multiple resources into one through the use of a servlet-filter, this tool also comes with a maven-plugin, that let you do the same offline, while compiling your webapp.</p>
+ <p>The idea is, to use the <a href="http://code.google.com/p/wro4j/wiki/MavenPlugin" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://code.google.com']);" title="See the documentation of hte wro4j-maven-plugin">wro4j-maven-plugin</a> to compile and combine your LESS-sources into CSS for production and to use the <a href="http://code.google.com/p/wro4j/wiki/Installation" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://code.google.com']);" title="See how to configure the filter">wro4j filter</a>, to dynamically deliver the compiled CSS while developing. This way, you do not have to alter your HTML-code, when switching between development and production, because you always link to the CSS-files.</p>
+ <p>So, lets get dirty!</p>
+ <h2>Step 1: Configure wro4j</h2>
+ <p>First, we configure <strong>wro4j</strong>, like as we want to use it to speed up our page. The details are explained and linked on wro4j’s <a href="http://code.google.com/p/wro4j/wiki/GettingStarted" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://code.google.com']);" title="Visit the Getting-Started-Page">Getting-Started-Page</a>. In short, we just need two files: <strong>wro.xml</strong> and <strong>wro.properties</strong>.</p>
+ <h3>wro.xml</h3>
+ <p>wro.xml tells wro4j, which resources should be combined and how the result should be named. I am using the following configuration to generate all LESS-Sources beneath <code>base/</code> into one CSS-file called <code>base.css</code>:</p>
+ <pre class="prettyprint linenums"> <code class="xml">
+ <groups xmlns="http://www.isdc.ro/wro">
+ <group name="base">
+ <css>/css/base/*.css</css>
+ </group>
+ </code>
+ </pre>
+ <p>wro4j looks for <code>/css/base/*.css</code> inside the root of the web-context, which is equal to <code>src/main/webapp</code> in a normal maven-project. There are <a href="http://code.google.com/p/wro4j/wiki/ResourceTypes" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://code.google.com']);" title="See the resource locator documentation of wro4j for more details">other ways to specifie the resources</a>, which enable you to store them elswhere. But this approach works best for our goal, because the path is understandable for both: the wro4j servlet-filter, we are configuring now for our development-environment, and the wro4j-maven-plugin, that we will configure later for build-time compilation.</p>
+ <h3>wro.properties</h3>
+ <p>wro.properties in short tells wro4j, how or if it should convert the combined sources and how it should behave. I am using the following configuration to tell wro4j, that it should convert <code>*.css</code>-sources into CSS and do that on <em>every request</em>:</p>
+ <pre class="prettyprint linenums"> <code class="properties">
+ preProcessors=less4j
+ disableCache=true
+ </code>
+ </pre>
+ <p>You can do a lot more here. There are countless <a href="http://code.google.com/p/wro4j/wiki/ConfigurationOptions" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-article', 'http://code.google.com']);" title="See all configuration options">configuration options</a> to fine-tune the behaviour of wro4j. The <code>disableCache=true</code> is crucial, because we would not see the changes take effect when developing with <strong>jetty-maven-plugin</strong> later on. You can also do much more with your resources here, for example <a href="https://code.google.com/p/wro4j/wiki/AvailableProcessors" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-article', 'http://code.google.com']);" title="See all available processors">minimizing</a>. But for our goal, we are now only intrested in the compilation of our LESS-sources.</p>
+ <h2>Step 2: Configure the wro4j servlet-filter</h2>
+ <p>Configuring the filter in the <strong>web.xml</strong> is easy. It is explained in wro4j’s <a href="https://code.google.com/p/wro4j/wiki/Installation" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-article', 'http://code.google.com']);" title="See the installation instructions for the wro4j servlet-filter">installation-insctuctions</a>. But the trick is, that we do not want to configure that filter for the production-version of our webapp, because we want to compile the resources offline, when the webapp is build. To acchieve this, we can use the <code><overrideDescriptor></code>-Parameter of the <a href="http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin#Configuring_Your_WebApp" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-article', 'http://wiki.eclipse.org']);" title="Read more about the configuration of the jetty-maven-plugin">jetty-maven-plugin</a>.</p>
+ <h2><overrideDescriptor></h2>
+ <p>This parameter lets you specify additional configuration options for the web.xml of your webapp. I am using the following configuration for my jetty-maven-plugin:</p>
+ <pre class="prettyprint linenums"> <code class="xml">
+ <plugin>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-maven-plugin</artifactId>
+ <configuration>
+ <webApp>
+ <overrideDescriptor>${project.basedir}/src/test/resources/jetty-web.xml</overrideDescriptor>
+ </webApp>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>ro.isdc.wro4j</groupId>
+ <artifactId>wro4j-core</artifactId>
+ <version>${wro4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>ro.isdc.wro4j</groupId>
+ <artifactId>wro4j-extensions</artifactId>
+ <version>${wro4j.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-pool</groupId>
+ <artifactId>commons-pool</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.google.javascript</groupId>
+ <artifactId>closure-compiler</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.github.lltyk</groupId>
+ <artifactId>dojo-shrinksafe</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jruby</groupId>
+ <artifactId>jruby-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jruby</groupId>
+ <artifactId>jruby-stdlib</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jruby</groupId>
+ <artifactId>jruby-stdlib</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>me.n4u.sass</groupId>
+ <artifactId>sass-gems</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>nz.co.edmi</groupId>
+ <artifactId>bourbon-gem-jar</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.codehaus.gmaven.runtime</groupId>
+ <artifactId>gmaven-runtime-1.7</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.webjars</groupId>
+ <artifactId>jshint</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.webjars</groupId>
+ <artifactId>less</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.webjars</groupId>
+ <artifactId>emberjs</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.webjars</groupId>
+ <artifactId>handlebars</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.webjars</groupId>
+ <artifactId>coffee-script</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.webjars</groupId>
+ <artifactId>jslint</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.webjars</groupId>
+ <artifactId>json2</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.webjars</groupId>
+ <artifactId>jquery</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </code>
+ </pre>
+ <p>The dependencies to <strong>wro4j-core</strong> and <strong>wro4j-extensions</strong> are needed by jetty, to be able to enable the filter defined below. Unfortunatly, one of the transitive dependencies of <code>wro4j-extensions</code> triggers an uggly error when running the jetty-maven-plugin. Therefore, all unneeded dependencies of <code>wro4j-extensions</code> are excluded, as a workaround for this error/bug.</p>
+ <h2>jetty-web.xml</h2>
+ <p>And my jetty-web.xml looks like this:</p>
+ <pre class="prettyprint linenums"> <code class="xml">
+ <?xml version="1.0" encoding="UTF-8"?>
+ <web-app xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+ version="2.5">
+ <filter>
+ <filter-name>wro</filter-name>
+ <filter-class>ro.isdc.wro.http.WroFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>wro</filter-name>
+ <url-pattern>*.css</url-pattern>
+ </filter-mapping>
+ </web-app>
+ </code>
+ </pre>
+ <p>The filter processes any URI’s that end with <code>.css</code>. This way, the wro4j servlet-filter makes <code>base.css</code> available under any path, because for exampl <code>/base.css</code>, <code>/css/base.css</code> and <code>/foo/bar/base.css</code> all end with <code>.css</code>.</p>
+ <p>This is all, that is needed to develop with dynamically reloadable compiled LESS-resources. Just fire up your browser and browse to <code>/what/you/like/base.css</code>. (But do not forget to put some LESS-files in <code>src/main/webapp/css/base/</code> first!)</p>
+ <h2>Step 3: Install wro4j-maven-plugin</h2>
+ <p>All that is left over to configure now, is the build-process. If you would build and deploy your webapp now, the CSS-file <code>base.css</code> would not be generated and the link to your stylesheet, that already works in our jetty-maven-plugin environment would point to a 404. Hence, we need to set up the <strong>wro4j-maven-plugin</strong>. I am using this configuration:</p>
+ <pre class="prettyprint linenums"> <code class="xml">
+ <plugin>
+ <groupId>ro.isdc.wro4j</groupId>
+ <artifactId>wro4j-maven-plugin</artifactId>
+ <version>${wro4j.version}</version>
+ <configuration>
+ <wroManagerFactory>ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory</wroManagerFactory>
+ <cssDestinationFolder>${project.build.directory}/${project.build.finalName}/css/</cssDestinationFolder>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </code>
+ </pre>
+ <p>I connected the <code>run</code>-goal with the <code>package</code>-phase, because the statically compiled CSS-file is needed only in the final war. The <code>ConfigurableWroManagerFactory</code> tells wro4j, that it should look up further configuration options in our <code>wro.properties</code>-file, where we tell wro4j, that it should compile our LESS-resources. The <code><cssDestinationFolder></code>-tag tells wro4j, where it should put the generated CSS-file. You can adjust that to suite your needs.</p>
+ <p>That’s it: now the same CSS-file, which is created on the fly by the wro4j servlet-filter when using <code>mvn jetty:run</code> and, thus, enables dynamic reloading of our LESS-resources, is generated during the build-process by the wro4j-maven-plugin.</p>
+ <h2>Cleanup and further considerations</h2>
+ <h3>lesscss-maven-plugin</h3>
+ <p>If you already compile your LESS-resources with the lesscss-maven-plugin, you can stick with it and skip step 3. But I strongly recommend giving wro4j-maven-plugin a try, because it is a much more powerfull tool, that can speed up your final webapp even more.</p>
+ <h3>Clean up your mess </h3>
+ <p>With a configuration like the above one, your LESS-resources and wro4j-configuration-files will be packed into your production-war. That might be confusing later, because neither wro4j nor LESS is used in the final war. You can add the following to your <code>pom.xml</code> to exclude these files from your war for the sake of clarity:</p>
+ <pre class="prettyprint linenums"> <code class="xml">
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ <configuration>
+ <warSourceExcludes>
+ WEB-INF/wro.*,
+ less/**
+ </warSourceExcludes>
+ </configuration>
+ </plugin>
+ </code>
+ </pre>
+ <h3>What’s next?</h3>
+ <p>We only scrached the surface, of what can be done with wro4j. Based on this configuration, you can easily enable additional features to fine-tune your final build for maximum speed. You really should take a look at the <a href="https://code.google.com/p/wro4j/wiki/AvailableProcessors" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-article', 'http://code.google.com']);" title="Available Processors">list of available Processors</a>!</p>
+ </div><!-- .entry-content -->
+ <footer class="entry-meta">
+ This entry was posted in <a href="http://juplo.de/category/jetty/" rel="category tag" title="View all posts in Jetty">Jetty</a>, <a href="http://juplo.de/category/css/" rel="category tag" title="View all posts in less">less</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>, <a href="http://juplo.de/category/wro4j/" rel="category tag" title="View all posts in wro4j">wro4j</a>. Bookmark the <a href="http://juplo.de/combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/" rel="bookmark" title="Permalink to Combining jetty-maven-plugin and wro4j-maven-plugin for Dynamic Reloading of LESS-Resources">permalink</a>.
+ </footer><!-- .entry-meta -->
+ </article><!-- #post-140 -->
+ <!-- You can start editing here. -->
+ <!-- If comments are open, but there are no comments. -->
+ <div id="respond">
+ <h3>Leave a Reply</h3>
+ <div id="cancel-comment-reply">
+ <small><a href="/combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/#respond" id="cancel-comment-reply-link" rel="nofollow" style="display:none;">Click here to cancel reply.</a></small>
+ </div>
+ <form action="http://juplo.de/wp-comments-post.php" id="commentform" method="post">
+ <p>Logged in as <a href="http://juplo.de/wp-admin/profile.php">Kai Moritz</a>. <a href="http://juplo.de/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fjuplo.de%2Fcombining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources%2F&_wpnonce=09e5cb501d" title="Log out of this account">Log out »</a></p>
+ <!--<p><small><strong>XHTML:</strong> You can use these tags: <code><a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> </code></small></p>-->
+ <p><textarea cols="58" id="comment" name="comment" rows="10" tabindex="4"></textarea></p>
+ <p><input id="submit" name="submit" tabindex="5" type="submit" value="Submit Comment">
+ <input id="comment_post_ID" name="comment_post_ID" type="hidden" value="140">
+ <input id="comment_parent" name="comment_parent" type="hidden" value="0">
+ </p>
+ <input id="_wp_unfiltered_html_comment_disabled" name="_wp_unfiltered_html_comment_disabled" type="hidden" value="2096655c89"><script>(function() {
+ if (window === window.parent) {
+ document.getElementById('_wp_unfiltered_html_comment_disabled').name = '_wp_unfiltered_html_comment';
+ }
+ })();</script>
+ <p style="display: none;"><input id="akismet_comment_nonce" name="akismet_comment_nonce" type="hidden" value="f31e001227"></p>
+ </form>
+ </div>
+ </article>
+<aside class="marginalcontent">
+ <div class="widget-area" id="secondary" role="complementary">
+ <aside class="widget" id="archives">
+ <h1 class="widget-title">Archives</h1>
+ <ul>
+ <li><a href="http://juplo.de/2013/10/" title="October 2013">October 2013</a></li>
+ <li><a href="http://juplo.de/2013/08/" title="August 2013">August 2013</a></li>
+ <li><a href="http://juplo.de/2013/01/" title="January 2013">January 2013</a></li>
+ <li><a href="http://juplo.de/2012/11/" title="November 2012">November 2012</a></li>
+ </ul>
+ </aside>
+ <aside class="widget" id="categories">
+ <h1 class="widget-title">Most Used Categories</h1>
+ <ul>
+ <li class="cat-item cat-item-4"><a href="http://juplo.de/category/java/" title="View all posts filed under Java">Java</a> (6)</li>
+ <li class="cat-item cat-item-6"><a href="http://juplo.de/category/hibernate/" title="View all posts filed under Hibernate">Hibernate</a> (5)</li>
+ <li class="cat-item cat-item-8"><a href="http://juplo.de/category/maven/" title="View all posts filed under Maven">Maven</a> (5)</li>
+ <li class="cat-item cat-item-9"><a href="http://juplo.de/category/jpa/" title="View all posts filed under JPA">JPA</a> (1)</li>
+ <li class="cat-item cat-item-10"><a href="http://juplo.de/category/appengine/" title="View all posts filed under appengine">appengine</a> (1)</li>
+ <li class="cat-item cat-item-11"><a href="http://juplo.de/category/oauth2/" title="View all posts filed under oauth2">oauth2</a> (1)</li>
+ </ul>
+ </aside>
+ <aside class="widget widget_search" id="search">
+ <h1 class="widget-title">Search</h1>
+ <form action="http://juplo.de/" class="searchform" id="searchform" method="get" role="search">
+ <div>
+ <label class="screen-reader-text" for="s">Search for:</label>
+ <input id="s" name="s" type="text" value="">
+ <input id="searchsubmit" type="submit" value="Search">
+ </div>
+ </form>
+ </aside>
+ </div><!-- #secondary .widget-area -->
+ <div class="widget-area" id="tertiary" role="supplementary">
+ </div><!-- #tertiary .widget-area -->
+ </aside>
--- /dev/null
+---
+title: Archiv - 2020
+linkTitle: 2020
+layout: year
+---
--- /dev/null
+---
+categories:
+ - hibernate
+ - java
+ - maven
+date: "2020-06-15T19:15:58+00:00"
+title: hibernate4-maven-plugin
+url: /hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/
+---
+<article class="maincontent">
+ <article class="post-34 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-34">
+ <div class="entry-header">
+ <h1 class="entry-title">hibernate4-maven-plugin</h1>
+ <div class="entry-meta">
+ Posted on <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/" rel="bookmark" title="19:29"><time class="entry-date" datetime="2012-11-28T19:29:12+00:00">November 28, 2012</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
+ </div><!-- .entry-meta -->
+ </div><!-- .entry-header -->
+ <div class="entry-content">
+ <h2>A simple Plugin for generating a Database-Schema from Hibernate 4 Mapping-Annotations</h2>
+ <p>
+ Hibernate comes with the buildin functionality, to automatically create or update the database schema. This functionality is configured in the session-configuraton via the parameter <code>hbm2ddl.auto</code> (see <a href="http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/#configuration-optional" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://docs.jboss.org']);">Hibernate Reference Documentation – Chapter 3.4. Optional configuration properties</a>). But doing so <a href="http://stackoverflow.com/questions/221379/hibernate-hbm2ddl-auto-update-in-production" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://stackoverflow.com']);">is not very wise</a>, because you can easily corrupt or erase your production database, if this configuration parameter slips through to your production environment.
+ </p>
+ <p>
+ Alternatively, you can <a href="http://stackoverflow.com/questions/835961/how-to-creata-database-schema-using-hibernate" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://stackoverflow.com']);">run the tools <strong>SchemaExport</strong> or <strong>SchemaUpdate</strong> by hand</a>. But that is not very comfortable and being used to maven you will quickly long for a plugin, that does that job automatically for you, when you fire up your test cases.
+ </p>
+ <p>In the good old times, there was the <a href="http://mojo.codehaus.org/maven-hibernate3/hibernate3-maven-plugin/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://mojo.codehaus.org']);">Maven Hibernate3 Plugin</a>, that does this for you. But unfortunatly, this plugin is not compatible with Hibernate 4.x. Since there does not seem to be any successor for the Maven Hibernate3 Plugin and <a href="http://www.google.de/search?q=hibernate4+maven+plugin" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.google.de']);">googeling</a> does not help, I decided to write up this simple plugin (inspired by these two articles I found: <a href="http://www.tikalk.com/alm/blog/schema-export-hibernate-4-and-maven" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.tikalk.com']);">Schema Export with Hibernate 4 and Maven</a> and <a href="http://doingenterprise.blogspot.de/2012/05/schema-generation-with-hibernate-4-jpa.html" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://doingenterprise.blogspot.de']);">Schema generation with Hibernate 4, JPA and Maven</a>).
+ </p>
+ <p>
+ I hope, the resulting simple to use buletproof <a href="/hibernate4-maven-plugin/">hibernate4-maven-plugin</a> is usefull!
+ </p>
+ <p>
+ <strong><a href="/hibernate4-maven-plugin/">Try it out now!</a></strong></p>
+ </div><!-- .entry-content -->
+ <footer class="entry-meta">
+ This entry was posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>. Bookmark the <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/" rel="bookmark" title="Permalink to hibernate4-maven-plugin">permalink</a>.
+ </footer><!-- .entry-meta -->
+ </article><!-- #post-34 -->
+ <!-- You can start editing here. -->
+ <h3 id="comments">15 Responses to “hibernate4-maven-plugin”</h3>
+ <div class="navigation">
+ <div class="alignleft"></div>
+ <div class="alignright"></div>
+ </div>
+ <ol class="commentlist">
+ <li class="comment even thread-even depth-1 parent" id="comment-556">
+ <div class="comment-body" id="div-comment-556">
+ <div class="comment-author vcard">
+ <cite class="fn">Jukes</cite> <span class="says">says:</span>
+ </div>
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-556">
+ November 7, 2013 at 23:18</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=556" title="Edit comment">(Edit)</a>
+ </div>
+ <p>
+ Hi thanks a lot for making this plugin available, great work!!<br>
+ I have a problem generating postgres schema. Looks like the plugin ignores the data type when adding default values and that yields a syntax error from Postgres. Or maybe I’m doing something wrong. I’m using version 1.0.3.</p>
+ <p>For example I have in java:</p>
+ <p>
+ @Column(name = “financialEnabled”, nullable = false, columnDefinition = “default TRUE”)<br>
+ private boolean financialEnabled;
+ </p>
+ <p>
+ Generated SQL is:<br>
+ financialEnabled default TRUE not null,
+ </p>
+ <p>As you can see the data type boolean is not translated to the SQL script. Thanks a lot for your help.</p>
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=556#respond" onclick="return addComment.moveForm("div-comment-556", "556", "respond", "34")">Reply</a>
+ </div>
+ </div>
+ <ul class="children">
+ <li class="comment byuser comment-author-kai bypostauthor odd alt depth-2" id="comment-567">
+ <div class="comment-body" id="div-comment-567">
+ <div class="comment-author vcard">
+ <cite class="fn"><a class="url" href="http://juplo.de" rel="external nofollow">Kai Moritz</a></cite> <span class="says">says:</span>
+ </div>
+ <div class="comment-meta commentmetadata">
+ <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-567">
+ November 11, 2013 at 13:09</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=567" title="Edit comment">(Edit)
+ </a>
+ </div>
+ <p>
+ This plugin is only a tool to automate the generation of the SQL in your development-environment.<br>
+ Questions on how to anotate your code correctly are better asked in a user-forum from hibernate or such.</p>
+ <p>
+ Nevertheless, I think I can give you a usefull hint:<br>
+ You are overwriting the automatically generated column-definition with “default TRUE”.<br>
+ Try it with</p>
+ <p>
+ @Column(name = “financialEnabled”, nullable = false)<br>
+ private boolean financialEnabled;</p>
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=567#respond" onclick="return addComment.moveForm("div-comment-567", "567", "respond", "34")">Reply</a>
+ </div>
+ </div>
+ </li><!-- #comment-## -->
+ </ul><!-- .children -->
+ </li><!-- #comment-## -->
+ <li class="comment even thread-odd thread-alt depth-1 parent" id="comment-390">
+ <div class="comment-body" id="div-comment-390">
+ <div class="comment-author vcard">
+ <cite class="fn">Milios</cite> <span class="says">says:</span>
+ </div>
+ <div class="comment-meta commentmetadata">
+ <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-390">
+ October 10, 2013 at 15:02
+ </a>
+
+ <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=390" title="Edit comment">(Edit)</a>
+ </div>
+ <p>Hi,</p>
+ <p>
+ looks like a very nice plugin. Unfortunately, part of our entities are in other modules/dependencies.<br>
+ Do you plan to add the possibility to scan also for dependencies of the project or at least of the plugin?</p>
+ <p>Also, when I only want to generate the SQL and use the following configuration, I got nothing.</p>
+ <p>Config:</p>
+ <p>
+ de.juplo<br>
+ hibernate4-maven-plugin<br>
+ 1.0.2</p>
+ <p>
+ true<br>
+ SCRIPT<br>
+ NONE<br>
+ com.deutscheboerse.hibernate.PostgreSQLDialect<br>
+ ${project.build.directory}/hibernate4/cmm-schema.sql</p>
+ <p>
+ com.deutscheboerse.energy<br>
+ energy-commons-hibernate<br>
+ ${commons.hibernate.version}</p>
+ <p>
+ org.springframework.security<br>
+ spring-security-core<br>
+ ${spring.security.version}</p>
+ <p>
+ org.slf4j<br>
+ slf4j-log4j12<br>
+ ${slf4j.version}</p>
+ <p>
+ Output:<br>
+ mvn hibernate4:export -e<br>
+ [INFO] Error stacktraces are turned on.<br>
+ [INFO] Scanning for projects…<br>
+ [INFO]<br>
+ [INFO] ————————————————————————<br>
+ [INFO] Building CMM WAR 1.0.0-RC5-SNAPSHOT<br>
+ [INFO] ————————————————————————<br>
+ [INFO]<br>
+ [INFO] — hibernate4-maven-plugin:1.0.2:export (default-cli) @ cmm-war —<br>
+ [INFO] Scanning directory D:\_dev\work\ii\src\cmm\trunk\cmm-war\target\classes f<br>
+ [INFO] No hibernate-properties-file found! (Checked path: D:\_dev\work\ii\src\cm<br>
+ [INFO] Gathered hibernate-configuration (turn on debugging for details):<br>
+ [INFO] hibernate.dialect = com.deutscheboerse.hibernate.PostgreSQLDialect<br>
+ [INFO] HHH000400: Using dialect: com.deutscheboerse.hibernate.PostgreSQLDialect<br>
+ [INFO] ————————————————————————<br>
+ [INFO] BUILD SUCCESS<br>
+ [INFO] ————————————————————————<br>
+ [INFO] Total time: 10.932s<br>
+ [INFO] Finished at: Thu Oct 10 12:51:05 UTC 2013<br>
+ [INFO] Final Memory: 9M/23M<br>
+ [INFO] ————————————————————————</p>
+ <p>
+ Thanks for any help,<br>
+ Milos.
+ </p>
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=390#respond" onclick="return addComment.moveForm("div-comment-390", "390", "respond", "34")">Reply</a>
+ </div>
+ </div>
+ <ul class="children">
+ <li class="comment byuser comment-author-kai bypostauthor odd alt depth-2 parent" id="comment-391">
+ <div class="comment-body" id="div-comment-391">
+ <div class="comment-author vcard">
+ <cite class="fn"><a class="url" href="http://juplo.de" rel="external nofollow">Kai Moritz</a></cite> <span class="says">says:</span>
+ </div>
+ <div class="comment-meta commentmetadata">
+ <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-391">
+ October 10, 2013 at 22:19
+ </a>
+
+ <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=391" title="Edit comment">(Edit)</a> </div>
+ <p>
+ Yes, I am working on the possibility, to scan for annotations in dependencies.<br>
+ Unfortunatly, I have no example-project for this use-case by hand.<br>
+ It would help a lot, if you could provide a sample-project on github or such.
+ </p>
+ <p>Greetings kai</p>
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=391#respond" onclick="return addComment.moveForm("div-comment-391", "391", "respond", "34")">Reply</a>
+ </div>
+ </div>
+ <ul class="children">
+ <li class="comment byuser comment-author-kai bypostauthor even depth-3" id="comment-568">
+ <div class="comment-body" id="div-comment-568">
+ <div class="comment-author vcard">
+ <cite class="fn"><a class="url" href="http://juplo.de" rel="external nofollow">Kai Moritz</a></cite> <span class="says">says:</span>
+ </div>
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-568">
+ November 11, 2013 at 13:11</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=568" title="Edit comment">(Edit)</a> </div>
+
+ <p>Version 1.0.3 of the plugin can now scan for annotations in the dependencies, too.</p>
+
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=568#respond" onclick="return addComment.moveForm("div-comment-568", "568", "respond", "34")">Reply</a> </div>
+ </div>
+ </li><!-- #comment-## -->
+ </ul><!-- .children -->
+ </li><!-- #comment-## -->
+ </ul><!-- .children -->
+ </li><!-- #comment-## -->
+ <li class="comment odd alt thread-even depth-1" id="comment-286">
+ <div class="comment-body" id="div-comment-286">
+ <div class="comment-author vcard">
+ <cite class="fn">Pedro</cite> <span class="says">says:</span> </div>
+
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-286">
+ August 7, 2013 at 18:54</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=286" title="Edit comment">(Edit)</a> </div>
+
+ <p>Following my previous question, here is the debug info</p>
+ <p>[DEBUG] Dependency: /Users/pmarques/.m2/repository/org/springframework/security/spring-security-acl/3.1.4.RELEASE/spring-security-acl-3.1.4.RELEASE.jar<br>
+ [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/atomikos-util/3.6.5/atomikos-util-3.6.5.jar<br>
+ [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-api/3.6.5/transactions-api-3.6.5.jar<br>
+ [DEBUG] Dependency: /Users/pmarques/.m2/repository/javax/transaction/transaction-api/1.1/transaction-api-1.1.jar<br>
+ [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-jdbc-deprecated/3.6.5/transactions-jdbc-deprecated-3.6.5.jar<br>
+ [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-jdbc/3.6.5/transactions-jdbc-3.6.5.jar<br>
+ [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-jta/3.6.5/transactions-jta-3.6.5.jar<br>
+ [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions/3.6.5/transactions-3.6.5.jar<br>
+ [DEBUG] Dependency: /Users/pmarques/.m2/repository/org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0.1/geronimo-jta_1.0.1B_spec-1.0.1.jar<br>
+ [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-jms-deprecated/3.6.5/transactions-jms-deprecated-3.6.5.jar<br>
+ [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-jms/3.6.5/transactions-jms-3.6.5.jar<br>
+ [DEBUG] Dependency: /Users/pmarques/.m2/repository/com/atomikos/transactions-hibernate3/3.6.5/transactions-hibernate3-3.6.5.jar<br>
+ [INFO] Scanning directory /target/classes for annotated classes…</p>
+
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=286#respond" onclick="return addComment.moveForm("div-comment-286", "286", "respond", "34")">Reply</a> </div>
+ </div>
+ </li><!-- #comment-## -->
+ <li class="comment even thread-odd thread-alt depth-1 parent" id="comment-285">
+ <div class="comment-body" id="div-comment-285">
+ <div class="comment-author vcard">
+ <cite class="fn">Pedro</cite> <span class="says">says:</span> </div>
+
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-285">
+ August 7, 2013 at 18:49</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=285" title="Edit comment">(Edit)</a> </div>
+
+ <p>Hi,</p>
+ <p>I have the following problem.<br>
+ The project that I use to test (and use the plugin) has the annotated classes as a dependency.<br>
+ I am getting the error:<br>
+ No annotated classes found in directory /target/classes</p>
+ <p>Shouldn’t the plugin scan all the dependencies also?</p>
+ <p>Thanks,<br>
+ Pedro.</p>
+
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=285#respond" onclick="return addComment.moveForm("div-comment-285", "285", "respond", "34")">Reply</a> </div>
+ </div>
+ <ul class="children">
+ <li class="comment byuser comment-author-kai bypostauthor odd alt depth-2 parent" id="comment-287">
+ <div class="comment-body" id="div-comment-287">
+ <div class="comment-author vcard">
+ <cite class="fn"><a class="url" href="http://juplo.de" rel="external nofollow">Kai Moritz</a></cite> <span class="says">says:</span> </div>
+
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-287">
+ August 7, 2013 at 19:12</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=287" title="Edit comment">(Edit)</a> </div>
+
+ <p>Hi Pedro,</p>
+ <p>I think, that your observation is right.<br>
+ But otherwise, dependencies should only be scanned if requested, because automatic scanning of the dependencies might lead to errors in other situations.</p>
+ <p>If you can make your project available to me (for example via github, or simply by mailing zipped version), I would add a configuration-parameter to enable/disable dependency-scanning and upload the refined plugin to central.</p>
+ <p>Regards,</p>
+ <p>Kai Moritz</p>
+
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=287#respond" onclick="return addComment.moveForm("div-comment-287", "287", "respond", "34")">Reply</a> </div>
+ </div>
+ <ul class="children">
+ <li class="comment byuser comment-author-kai bypostauthor even depth-3" id="comment-426">
+ <div class="comment-body" id="div-comment-426">
+ <div class="comment-author vcard">
+ <cite class="fn"><a class="url" href="http://juplo.de" rel="external nofollow">Kai Moritz</a></cite> <span class="says">says:</span> </div>
+
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-426">
+ October 18, 2013 at 02:52</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=426" title="Edit comment">(Edit)</a> </div>
+
+ <p>The <a href="/hibernate4-maven-plugin-1-0-3-released/" rel="nofollow" title="Open the release-notes">new version 1.0.3</a> of the plugin adds support for annotated classes in dependencies!</p>
+
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=426#respond" onclick="return addComment.moveForm("div-comment-426", "426", "respond", "34")">Reply</a> </div>
+ </div>
+ </li><!-- #comment-## -->
+ </ul><!-- .children -->
+ </li><!-- #comment-## -->
+ </ul><!-- .children -->
+ </li><!-- #comment-## -->
+ <li class="comment odd alt thread-even depth-1 parent" id="comment-276">
+ <div class="comment-body" id="div-comment-276">
+ <div class="comment-author vcard">
+ <cite class="fn"><a class="url" href="http://bidlogix.com" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-commentauthor', 'http://bidlogix.com']);" rel="external nofollow">mike</a></cite> <span class="says">says:</span> </div>
+
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-276">
+ July 30, 2013 at 12:57</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=276" title="Edit comment">(Edit)</a> </div>
+
+ <p>Hello,</p>
+ <p>I’m upgrading from hibernate3 to to hibernate4 and have moved from the hibernate3-maven-plugin to this version. I haven’t undertaken (and don’t want to just yet) the big job of changing my hbm mapping files to annotations.</p>
+ <p>As far as I can see this is a show stopper for using your nice plugin. Can you please confirm if this is the case and whether you are planning to add support for scanning for hbm files?</p>
+ <p>Many thanks,</p>
+ <p>Mike Cohen.</p>
+
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=276#respond" onclick="return addComment.moveForm("div-comment-276", "276", "respond", "34")">Reply</a> </div>
+ </div>
+ <ul class="children">
+ <li class="comment byuser comment-author-tortenheber even depth-2" id="comment-277">
+ <div class="comment-body" id="div-comment-277">
+ <div class="comment-author vcard">
+ <cite class="fn">tortenheber</cite> <span class="says">says:</span> </div>
+
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-277">
+ July 31, 2013 at 23:18</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=277" title="Edit comment">(Edit)</a> </div>
+
+ <p>Hello Mike,</p>
+ <p>I added the requested feature in the SNAPSHOT-version.<br>
+ It would be nice, if you could test, if the new feature works, because I have no example project by hand, that still uses hibernate-mapping via XML.</p>
+ <p>You can download an actual build here:</p>
+ <p><a href="https://oss.sonatype.org/content/repositories/snapshots//de/juplo/hibernate4-maven-plugin/1.0.2-SNAPSHOT/" onclick="javascript:_gaq.push(['_trackEvent', 'outbound-comment', 'http://oss.sonatype.org']);" rel="nofollow">https://oss.sonatype.org/content/repositories/snapshots//de/juplo/hibernate4-maven-plugin/1.0.2-SNAPSHOT/</a></p>
+ <p>or build it by yourself from the sources.<br>
+ The feature is documented here:</p>
+ <p><a href="http://juplo.de/hibernate4-maven-plugin-1.0.2-SNAPSHOT/export-mojo.html" rel="nofollow">http://juplo.de/hibernate4-maven-plugin-1.0.2-SNAPSHOT/export-mojo.html</a></p>
+ <p>Best regards</p>
+ <p>kai</p>
+
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=277#respond" onclick="return addComment.moveForm("div-comment-277", "277", "respond", "34")">Reply</a> </div>
+ </div>
+ </li><!-- #comment-## -->
+ </ul><!-- .children -->
+ </li><!-- #comment-## -->
+ <li class="comment odd alt thread-odd thread-alt depth-1 parent" id="comment-50">
+ <div class="comment-body" id="div-comment-50">
+ <div class="comment-author vcard">
+ <cite class="fn">Victor</cite> <span class="says">says:</span> </div>
+
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-50">
+ February 22, 2013 at 15:28</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=50" title="Edit comment">(Edit)</a> </div>
+
+ <p>Hey I have modified your code to support envers and generate auditing tables, if you want I can send you a patch. Thanks!</p>
+
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=50#respond" onclick="return addComment.moveForm("div-comment-50", "50", "respond", "34")">Reply</a> </div>
+ </div>
+ <ul class="children">
+ <li class="comment even depth-2 parent" id="comment-51">
+ <div class="comment-body" id="div-comment-51">
+ <div class="comment-author vcard">
+ <cite class="fn">admin</cite> <span class="says">says:</span> </div>
+
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-51">
+ February 22, 2013 at 19:54</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=51" title="Edit comment">(Edit)</a> </div>
+
+ <p>Your welcom.<br>
+ Send it!</p>
+
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=51#respond" onclick="return addComment.moveForm("div-comment-51", "51", "respond", "34")">Reply</a> </div>
+ </div>
+ <ul class="children">
+ <li class="comment odd alt depth-3 parent" id="comment-54">
+ <div class="comment-body" id="div-comment-54">
+ <div class="comment-author vcard">
+ <cite class="fn">Victor</cite> <span class="says">says:</span> </div>
+
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-54">
+ February 25, 2013 at 15:28</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=54" title="Edit comment">(Edit)</a> </div>
+
+ <p>Where to? Is there a github repo?</p>
+
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=54#respond" onclick="return addComment.moveForm("div-comment-54", "54", "respond", "34")">Reply</a> </div>
+ </div>
+ <ul class="children">
+ <li class="comment even depth-4" id="comment-55">
+ <div class="comment-body" id="div-comment-55">
+ <div class="comment-author vcard">
+ <cite class="fn">admin</cite> <span class="says">says:</span> </div>
+
+ <div class="comment-meta commentmetadata"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#comment-55">
+ February 25, 2013 at 20:05</a> <a class="comment-edit-link" href="http://juplo.de/wp-admin/comment.php?action=editcomment&c=55" title="Edit comment">(Edit)</a> </div>
+
+ <p>There is a private git-Repository.<br>
+ <a href="http://juplo.de/hibernate4-maven-plugin/source-repository.html" rel="nofollow">Check the project-documentation!</a></p>
+ <p>You can <a href="http://juplo.de/hibernate4-maven-plugin/team-list.html" rel="nofollow">send me</a> a patch or a pull-request to <a href="mailto:kai@juplo.de">kai@juplo.de</a></p>
+
+ <div class="reply">
+ <a class="comment-reply-link" href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/?replytocom=55#respond" onclick="return addComment.moveForm("div-comment-55", "55", "respond", "34")">Reply</a> </div>
+ </div>
+ </li><!-- #comment-## -->
+ </ul><!-- .children -->
+ </li><!-- #comment-## -->
+ </ul><!-- .children -->
+ </li><!-- #comment-## -->
+ </ul><!-- .children -->
+ </li><!-- #comment-## -->
+ </ol>
+
+ <div class="navigation">
+ <div class="alignleft"></div>
+ <div class="alignright"></div>
+ </div>
+
+
+ <div id="respond">
+
+ <h3>Leave a Reply</h3>
+
+ <div id="cancel-comment-reply">
+ <small><a href="/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/#respond" id="cancel-comment-reply-link" rel="nofollow" style="display:none;">Click here to cancel reply.</a></small>
+ </div>
+
+
+ <form action="http://juplo.de/wp-comments-post.php" id="commentform" method="post">
+
+
+ <p>Logged in as <a href="http://juplo.de/wp-admin/profile.php">Kai Moritz</a>. <a href="http://juplo.de/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fjuplo.de%2Fhibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations%2F&_wpnonce=09e5cb501d" title="Log out of this account">Log out »</a></p>
+
+
+ <!--<p><small><strong>XHTML:</strong> You can use these tags: <code><a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> </code></small></p>-->
+
+ <p><textarea cols="58" id="comment" name="comment" rows="10" tabindex="4"></textarea></p>
+
+ <p><input id="submit" name="submit" tabindex="5" type="submit" value="Submit Comment">
+ <input id="comment_post_ID" name="comment_post_ID" type="hidden" value="34">
+ <input id="comment_parent" name="comment_parent" type="hidden" value="0">
+ </p>
+ <input id="_wp_unfiltered_html_comment_disabled" name="_wp_unfiltered_html_comment_disabled" type="hidden" value="2cfe5768bb"><script>(function() {
+ if (window === window.parent) {
+ document.getElementById('_wp_unfiltered_html_comment_disabled').name = '_wp_unfiltered_html_comment';
+ }
+ })();</script>
+ <p style="display: none;"><input id="akismet_comment_nonce" name="akismet_comment_nonce" type="hidden" value="18eb674233"></p>
+ </form>
+ </div>
+ </article>
+<aside class="marginalcontent">
+ <div class="widget-area" id="secondary" role="complementary">
+ <aside class="widget" id="archives">
+ <h1 class="widget-title">Archives</h1>
+ <ul>
+ <li><a href="http://juplo.de/2013/10/" title="October 2013">October 2013</a></li>
+ <li><a href="http://juplo.de/2013/08/" title="August 2013">August 2013</a></li>
+ <li><a href="http://juplo.de/2013/01/" title="January 2013">January 2013</a></li>
+ <li><a href="http://juplo.de/2012/11/" title="November 2012">November 2012</a></li>
+ </ul>
+ </aside>
+ <aside class="widget" id="categories">
+ <h1 class="widget-title">Most Used Categories</h1>
+ <ul>
+ <li class="cat-item cat-item-4"><a href="http://juplo.de/category/java/" title="View all posts filed under Java">Java</a> (6)</li>
+ <li class="cat-item cat-item-6"><a href="http://juplo.de/category/hibernate/" title="View all posts filed under Hibernate">Hibernate</a> (5)</li>
+ <li class="cat-item cat-item-8"><a href="http://juplo.de/category/maven/" title="View all posts filed under Maven">Maven</a> (5)</li>
+ <li class="cat-item cat-item-9"><a href="http://juplo.de/category/jpa/" title="View all posts filed under JPA">JPA</a> (1)</li>
+ <li class="cat-item cat-item-10"><a href="http://juplo.de/category/appengine/" title="View all posts filed under appengine">appengine</a> (1)</li>
+ <li class="cat-item cat-item-11"><a href="http://juplo.de/category/oauth2/" title="View all posts filed under oauth2">oauth2</a> (1)</li>
+ </ul>
+ </aside>
+ <aside class="widget widget_search" id="search">
+ <h1 class="widget-title">Search</h1>
+ <form action="http://juplo.de/" class="searchform" id="searchform" method="get" role="search">
+ <div>
+ <label class="screen-reader-text" for="s">Search for:</label>
+ <input id="s" name="s" type="text" value="">
+ <input id="searchsubmit" type="submit" value="Search">
+ </div>
+ </form>
+ </aside>
+ </div><!-- #secondary .widget-area -->
+ <div class="widget-area" id="tertiary" role="supplementary">
+ </div><!-- #tertiary .widget-area -->
+ </aside>
--- /dev/null
+---
+title: Archiv - 2021
+linkTitle: 2021
+layout: year
+---
--- /dev/null
+---
+_edit_last: "2"
+author: kai
+categories:
+ - demos
+ - explained
+ - java
+ - kafka
+ - spring
+ - spring-boot
+classic-editor-remember: classic-editor
+date: "2021-02-05T17:59:38+00:00"
+guid: http://juplo.de/?p=1201
+parent_post_id: null
+post_id: "1201"
+title: 'Implementing The Outbox-Pattern With Kafka - Part 0: The example'
+url: /implementing-the-outbox-pattern-with-kafka-part-0-the-example/
+
+---
+_This article is part of a Blog-Series_
+
+Based on a [very simple example-project](/implementing-the-outbox-pattern-with-kafka-part-0-the-example/)
+we will implemnt the [Outbox-Pattern](https://microservices.io/patterns/data/transactional-outbox.html) with [Kafka](https://kafka.apache.org/quickstart).
+
+- Part 0: The Example-Project
+- [Part 1: Writing In The Outbox-Table](/implementing-the-outbox-pattern-with-kafka-part-1-the-outbox-table/ "Jump to the explanation what has to be added, to enqueue messages in an outbox for successfully written transactions")
+
+## TL;DR
+
+In this part, a small example-project is introduced, that features a component, which has to inform another component upon every succsessfully completed operation.
+
+## The Plan
+
+In this mini-series I will implement the [Outbox-Pattern](https://microservices.io/patterns/data/transactional-outbox.html)
+as described on Chris Richardson's fabolous website [microservices.io](https://microservices.io/).
+
+The pattern enables you, to send a message as part of a database transaction in a reliable way, effectively turining the writing of the data
+to the database and the sending of the message into an **[atomic operation](https://en.wikipedia.org/wiki/Atomicity_(database_systems))**:
+either both operations are successful or neither.
+
+The pattern is well known and implementing it with [Kafka](https://kafka.apache.org/quickstart) looks like an easy straight forward job at first glance.
+However, there are many obstacles that easily lead to an incomplete or incorrect implementation.
+In this blog-series, we will circumnavigate these obstacles together step by step.
+
+## The Example Project
+
+To illustrate our implementation, we will use a simple example-project.
+It mimics a part of the registration process for an web application:
+a (very!) simplistic service takes registration orders for new users.
+
+- Successfull registration requests will return a 201 (Created), that carries the URI, under which the data of the newly registered user can be accessed in the `Location`-header:
+
+`echo peter | http :8080/users
+ HTTP/1.1 201
+ Content-Length: 0
+ Date: Fri, 05 Feb 2021 14:44:51 GMT
+ Location: http://localhost:8080/users/peter
+ `
+- Requests to registrate an already existing user will result in a 400 (Bad Request):
+
+`echo peter | http :8080/users
+ HTTP/1.1 400
+ Connection: close
+ Content-Length: 0
+ Date: Fri, 05 Feb 2021 14:44:53 GMT
+ `
+- Successfully registrated users can be listed:
+ `http :8080/users
+ HTTP/1.1 200
+ Content-Type: application/json;charset=UTF-8
+ Date: Fri, 05 Feb 2021 14:53:59 GMT
+ Transfer-Encoding: chunked
+ [
+ {
+ "created": "2021-02-05T10:38:32.301",
+ "loggedIn": false,
+ "username": "peter"
+ },
+ ...
+ ]
+ `
+
+## The Messaging Use-Case
+
+As our messaging use-case imagine, that there has to happen several processes after a successful registration of a new user.
+This may be the generation of an invoice, some business analytics or any other lengthy process that is best carried out asynchronously.
+Hence, we have to generate an event, that informs the responsible services about new registrations.
+
+Obviously, these events should only be generated, if the registration is completed successfully.
+The event must not be fired, if the registration is rejected, because a duplicate username.
+
+On the other hand, the publication of the event must happen reliably, because otherwise, the new might not be charged for the services, we offer...
+
+## The Transaction
+
+The users are stored in a database and the creation of a new user happens in a transaction.
+A "brilliant" colleague came up with the idea, to trigger an `IncorrectResultSizeDataAccessException` to detect duplicate usernames:
+
+`User user = new User(username);
+repository.save(user);
+// Triggers an Exception, if more than one entry is found
+repository.findByUsername(username);
+`
+
+The query for the user by its names triggers an `IncorrectResultSizeDataAccessException`, if more than one entry is found.
+The uncaught exception will mark the transaction for rollback, hence, canceling the requested registration.
+The 400-response is then generated by a corresponding `ExceptionHandler`:
+
+`@ExceptionHandler
+public ResponseEntity incorrectResultSizeDataAccessException(
+ IncorrectResultSizeDataAccessException e)
+{
+ LOG.info("User already exists!");
+ return ResponseEntity.badRequest().build();
+}
+`
+
+Please do not code this at home...
+
+But his weired implementation perfectly illustrates the requirements for our messaging use-case:
+The user is written into the database.
+But the registration is not successfully completed until the transaction is commited.
+If the transaction is rolled back, no message must be send, because no new user was registered.
+
+## Decoupling with Springs EventPublisher
+
+In the example implementation I am using an `EventPublisher` to decouple the business logic from the implementation of the messaging.
+The controller publishes an event, when a new user is registered:
+
+`publisher.publishEvent(new UserEvent(this, usernam));
+`
+
+A listener annotated with `@TransactionalEventListener` receives the events and handles the messaging:
+
+`@TransactionalEventListener
+public void onUserEvent(UserEvent event)
+{
+ // Sending the message happens here...
+}
+`
+
+In non-critical use-cases, it might be sufficient to actually send the message to Kafka right here.
+Spring ensures, that the message of the listener is only called, if the transaction completes successfully.
+But in the case of a failure this naive implementation can loose messages.
+If the application crashes, after the transaction has completed, but before the message could be send, the event would be lost.
+
+In the following blog posts, we will step by step implement a solution based on the Outbox-Pattern, that can guarantee Exactly-Once semantics for the send messages.
+
+## May The Source Be With You!
+
+The complete source code of the example-project can be cloned here:
+
+- `git clone /git/demos/spring/data-jdbc`
+- `git clone https://github.com/juplo/demos-spring-data-jdbc.git`
+
+It includes a [Setup for Docker Compose](https://github.com/juplo/demos-spring-data-jdbc/blob/master/docker-compose.yml), that can be run without compiling
+the project. And a runnable [README.sh](https://github.com/juplo/demos-spring-data-jdbc/blob/master/README.sh), that compiles and run the application and illustrates the example.
--- /dev/null
+---
+title: "Blog"
+weight: 10
+---
+<main class="maincontent">
+ <article class="post-140 post type-post status-publish format-standard hentry category-jetty category-less category-maven category-wro4j" id="post-140">
+ <header class="entry-header">
+ <h2 class="entry-title"><a href="http://juplo.de/combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/" rel="bookmark" title="Permalink to Combining jetty-maven-plugin and wro4j-maven-plugin for Dynamic Reloading of LESS-Resources">Combining jetty-maven-plugin and wro4j-maven-plugin for Dynamic Reloading of LESS-Resources</a></h2>
+ <div class="entry-meta">
+ Posted on <a href="http://juplo.de/combining-jetty-maven-plugin-and-wro4j-maven-plugin-for-dynamic-reloading-of-less-resources/" rel="bookmark" title="12:58"><time class="entry-date" datetime="2013-12-06T12:58:17+00:00">December 6, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
+ </div><!-- .entry-meta -->
+ </header><!-- .entry-header -->
+ <div class="entry-content">
+ </div><!-- .entry-content -->
+ <footer class="entry-meta">
+ <span class="cat-links">
+ Posted in <a href="http://juplo.de/category/jetty/" rel="category tag" title="View all posts in Jetty">Jetty</a>, <a href="http://juplo.de/category/css/" rel="category tag" title="View all posts in less">less</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>, <a href="http://juplo.de/category/wro4j/" rel="category tag" title="View all posts in wro4j">wro4j</a>
+ </span>
+ </footer><!-- .entry-meta -->
+ </article><!-- #post-140 -->
+ <article class="post-114 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-114">
+ <header class="entry-header">
+ <h2 class="entry-title"><a href="http://juplo.de/hibernate4-maven-plugin-1-0-3-released/" rel="bookmark" title="Permalink to hibernate4-maven-plugin 1.0.3 released!">hibernate4-maven-plugin 1.0.3 released!</a></h2>
+ <div class="entry-meta">
+ Posted on <a href="http://juplo.de/hibernate4-maven-plugin-1-0-3-released/" rel="bookmark" title="02:46"><time class="entry-date" datetime="2013-10-18T02:46:23+00:00">October 18, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
+ </div><!-- .entry-meta -->
+ </header><!-- .entry-header -->
+ <div class="entry-content">
+ </div><!-- .entry-content -->
+ <footer class="entry-meta">
+ <span class="cat-links">
+ Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>
+ </span>
+ </footer><!-- .entry-meta -->
+ </article><!-- #post-114 -->
+ <article class="post-97 post type-post status-publish format-standard hentry category-appengine category-java category-maven category-oauth2" id="post-97">
+ <header class="entry-header">
+ <h2 class="entry-title"><a href="http://juplo.de/log-out-from-wrong-account-with-maven-appengine-plugin/" rel="bookmark" title="Permalink to Log out from wrong Account with maven-appengine-plugin">Log out from wrong Account with maven-appengine-plugin</a></h2>
+ <div class="entry-meta">
+ Posted on <a href="http://juplo.de/log-out-from-wrong-account-with-maven-appengine-plugin/" rel="bookmark" title="11:33"><time class="entry-date" datetime="2013-10-03T11:33:56+00:00">October 3, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
+ </div><!-- .entry-meta -->
+ </header><!-- .entry-header -->
+ <div class="entry-content">
+ </div><!-- .entry-content -->
+ <footer class="entry-meta">
+ <span class="cat-links">
+ Posted in <a href="http://juplo.de/category/appengine/" rel="category tag" title="View all posts in appengine">appengine</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>, <a href="http://juplo.de/category/oauth2/" rel="category tag" title="View all posts in oauth2">oauth2</a>
+ </span>
+ </footer><!-- .entry-meta -->
+ </article><!-- #post-97 -->
+ <article class="post-90 post type-post status-publish format-standard hentry category-hibernate category-java category-jpa" id="post-90">
+ <header class="entry-header">
+ <h2 class="entry-title"><a href="http://juplo.de/bidirectional-association-with-elementcollection/" rel="bookmark" title="Permalink to Bidirectional Association with @ElementCollection">Bidirectional Association with @ElementCollection</a></h2>
+ <div class="entry-meta">
+ Posted on <a href="http://juplo.de/bidirectional-association-with-elementcollection/" rel="bookmark" title="11:11"><time class="entry-date" datetime="2013-10-03T11:11:36+00:00">October 3, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
+ </div><!-- .entry-meta -->
+ </header><!-- .entry-header -->
+ <div class="entry-content">
+ </div><!-- .entry-content -->
+ <footer class="entry-meta">
+ <span class="cat-links">
+ Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/jpa/" rel="category tag" title="View all posts in JPA">JPA</a>
+ </span>
+ </footer><!-- .entry-meta -->
+ </article><!-- #post-90 -->
+ <article class="post-75 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-75">
+ <header class="entry-header">
+ s <h2 class="entry-title"><a href="http://juplo.de/hibernate4-maven-plugin-1-0-2-release/" rel="bookmark" title="Permalink to hibernate4-maven-plugin 1.0.2 released!">hibernate4-maven-plugin 1.0.2 released!</a></h2>
+ <div class="entry-meta">
+ Posted on <a href="http://juplo.de/hibernate4-maven-plugin-1-0-2-release/" rel="bookmark" title="02:06"><time class="entry-date" datetime="2013-08-02T02:06:08+00:00">August 2, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
+ </div><!-- .entry-meta -->
+ </header><!-- .entry-header -->
+ <div class="entry-content">
+ </div><!-- .entry-content -->
+ <footer class="entry-meta">
+ <span class="cat-links">
+ Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>
+ </span>
+ </footer><!-- .entry-meta -->
+ </article><!-- #post-75 -->
+ <article class="post-64 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-64">
+ <header class="entry-header">
+ <h2 class="entry-title"><a href="http://juplo.de/hibernate4-maven-plugin-1-0-1-released/" rel="bookmark" title="Permalink to hibernate4-maven-plugin 1.0.1 released!">hibernate4-maven-plugin 1.0.1 released!</a></h2>
+ <div class="entry-meta">
+ Posted on <a href="http://juplo.de/hibernate4-maven-plugin-1-0-1-released/" rel="bookmark" title="01:10"><time class="entry-date" datetime="2013-01-16T01:10:59+00:00">January 16, 2013</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
+ </div><!-- .entry-meta -->
+ </header><!-- .entry-header -->
+ <div class="entry-content">
+ </div><!-- .entry-content -->
+ <footer class="entry-meta">
+ <span class="cat-links">
+ Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>
+ </span>
+ </footer><!-- .entry-meta -->
+ </article><!-- #post-64 -->
+ <article class="post-55 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-55">
+ <header class="entry-header">
+ <h2 class="entry-title"><a href="http://juplo.de/hibernate4-maven-plugin-1-0-released/" rel="bookmark" title="Permalink to hibernate4-maven-plugin 1.0 released!">hibernate4-maven-plugin 1.0 released!</a></h2>
+ <div class="entry-meta">
+ Posted on <a href="http://juplo.de/hibernate4-maven-plugin-1-0-released/" rel="bookmark" title="22:04"><time class="entry-date" datetime="2012-11-29T22:04:25+00:00">November 29, 2012</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
+ </div><!-- .entry-meta -->
+ </header><!-- .entry-header -->
+ <div class="entry-content">
+ </div><!-- .entry-content -->
+ <footer class="entry-meta">
+ <span class="cat-links">
+ Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>
+ </span>
+ </footer><!-- .entry-meta -->
+ </article><!-- #post-55 -->
+ <article class="post-34 post type-post status-publish format-standard hentry category-hibernate category-java category-maven" id="post-34">
+ <header class="entry-header">
+ <h2 class="entry-title"><a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/" rel="bookmark" title="Permalink to hibernate4-maven-plugin">hibernate4-maven-plugin</a></h2>
+ <div class="entry-meta">
+ Posted on <a href="http://juplo.de/hibernate4-maven-plugin-a-simple-plugin-for-generating-a-database-schema-from-hibernate-4-mapping-annotations/" rel="bookmark" title="19:29"><time class="entry-date" datetime="2012-11-28T19:29:12+00:00">November 28, 2012</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="http://juplo.de/author/kai/" rel="author" title="View all posts by Kai Moritz">Kai Moritz</a></span></span>
+ </div><!-- .entry-meta -->
+ </header><!-- .entry-header -->
+ <div class="entry-content">
+ </div><!-- .entry-content -->
+ <footer class="entry-meta">
+ <span class="cat-links">
+ Posted in <a href="http://juplo.de/category/hibernate/" rel="category tag" title="View all posts in Hibernate">Hibernate</a>, <a href="http://juplo.de/category/java/" rel="category tag" title="View all posts in Java">Java</a>, <a href="http://juplo.de/category/maven/" rel="category tag" title="View all posts in Maven">Maven</a>
+ </span>
+ </footer><!-- .entry-meta -->
+ </article><!-- #post-34 -->
+ </main>
+<div class="marginalcontent">
+ <div class="widget-area" id="secondary" role="complementary">
+ <aside class="widget" id="archives">
+ <h1 class="widget-title">Archives</h1>
+ <ul>
+ <li><a href="http://juplo.de/2013/10/" title="October 2013">October 2013</a></li>
+ <li><a href="http://juplo.de/2013/08/" title="August 2013">August 2013</a></li>
+ <li><a href="http://juplo.de/2013/01/" title="January 2013">January 2013</a></li>
+ <li><a href="http://juplo.de/2012/11/" title="November 2012">November 2012</a></li>
+ </ul>
+ </aside>
+ <aside class="widget" id="categories">
+ <h1 class="widget-title">Most Used Categories</h1>
+ <ul>
+ <li class="cat-item cat-item-4"><a href="http://juplo.de/category/java/" title="View all posts filed under Java">Java</a> (6)</li>
+ <li class="cat-item cat-item-6"><a href="http://juplo.de/category/hibernate/" title="View all posts filed under Hibernate">Hibernate</a> (5)</li>
+ <li class="cat-item cat-item-8"><a href="http://juplo.de/category/maven/" title="View all posts filed under Maven">Maven</a> (5)</li>
+ <li class="cat-item cat-item-9"><a href="http://juplo.de/category/jpa/" title="View all posts filed under JPA">JPA</a> (1)</li>
+ <li class="cat-item cat-item-10"><a href="http://juplo.de/category/appengine/" title="View all posts filed under appengine">appengine</a> (1)</li>
+ <li class="cat-item cat-item-11"><a href="http://juplo.de/category/oauth2/" title="View all posts filed under oauth2">oauth2</a> (1)</li>
+ </ul>
+ </aside>
+ <aside class="widget widget_search" id="search">
+ <h1 class="widget-title">Search</h1>
+ <form action="http://juplo.de/" class="searchform" id="searchform" method="get" role="search">
+ <div>
+ <label class="screen-reader-text" for="s">Search for:</label>
+ <input id="s" name="s" type="text" value="">
+ <input id="searchsubmit" type="submit" value="Search">
+ </div>
+ </form>
+ </aside>
+ </div><!-- #secondary .widget-area -->
+ <div class="widget-area" id="tertiary" role="supplementary">
+ </div><!-- #tertiary .widget-area -->
+ </div>
--- /dev/null
+---
+title: "Frameset to Bypass Same-Origin-Policy"
+url: /devel.html
+---
--- /dev/null
+---
+title: "Projects"
+url: /projects.html
+outputs:
+ - html
+weight: 20
+---
+<main class="maincontent">
+ <h1>Projects - Potemkinsche Dörfer!</h1>
+ <ul>
+ <li><a href="potemkin/fix-swf/overview.html" th:href="@{/potemkin/fix-swf/overview.html}">Fix SWF</a></li>
+ <li><a href="potemkin/html-experimente.html" th:href="@{/potemkin/html-experimente.html}">HTML-Experimente</a></li>
+ <li><a href="potemkin/accelerator.html" th:href="@{/potemkin/accelerator.html}">accelerator</a></li>
+ <li><a href="potemkin/typo.html" th:href="@{/potemkin/typo.html}">Typography</a></li>
+ </ul>
+ </main>
--- /dev/null
+---
+title: "accelerator - Overview"
+url: /potemkin/accelerator.html
+---
+<main class="maincontent">
+ <h1>Accelerator - DUMMY</h1>
+ </main>
--- /dev/null
+---
+title: "Fix SWF"
+url: /potemkin/fix-swf/overview.html
+build:
+ render: local
+outputs:
+ - html
+---
+<main class="maincontent">
+ <h1>Overviw - DUMMY</h1>
+ </main>
--- /dev/null
+---
+title: "Fix SWF - Getting Started"
+linkTitle: "Getting Started"
+url: /potemkin/fix-swf/getting-started.html
+---
+<main class="maincontent">
+ <h1>Getting Started - DUMMY</h1>
+ </main>
--- /dev/null
+---
+title: "Fix SWF - Overview"
+url: /potemkin/fix-swf/overview.html
+---
+<main class="maincontent">
+ <h1>Overviw - DUMMY</h1>
+ </main>
--- /dev/null
+---
+title: "HTML-Experimente"
+---
+<div>
+ <h1>HTML-Elemente / spezielle Seiten</h1>
+ <h2>Die Templates</h2>
+ <ul>
+ <li><a href="templates/layout.html">Layout</a> - Das Layout für juplo.de</li>
+ <li><a href="templates/fragments.html">Fragmente</a> Auf mehreren Seiten verwendete Inhalte</li>
+ <li><a href="error/404.html">404-Fehlerseite</a></li>
+ <li><a href="error/5xx.html">5xx-Fehlerseite</a></li>
+ <li><a href="templates/testlab.html">Testlab</a> Testseite für die Skalierung auf untrschiedliche Seitenbreiten</li>
+ </ul>
+ </div>
+<article class="maincontent">
+ <header><h1>HTML-Elemente / spezielle Seiten</h1></header>
+ <h2>Seiten zum Testen gerenderter Inhalte</h2>
+ <ul>
+ <li><a href="html-experimente/formulare.html" th:href="@{/potemkin/html-experimente/formulare.html}">Formulare</a></li>
+ <li><a href="html-experimente/symbole.html" th:href="@{/potemkin/html-experimente/symbole.html}">Symbol-Font</a></li>
+ <li><a href="error/404.html" th:href="@{/404.html}">404-Template</a></li>
+ <li><a href="html-experimente/gibts-ja-gar-nicht.html" th:href="@{/potemkin/html-experimente/gibts-ja-gar-nicht.html}">404-Fehlerseite</a></li>
+ <li><a href="error/5xx.html" th:href="@{/error.html}">Template für andere Fehler</a></li>
+ <li><a href="html-experimente/error.html" th:href="@{/potemkin/html-experimente/error.html}">Fehlerseite für andere Fehler</a></li>
+ </ul>
+ <h2>Layout-Grenzfälle</h2>
+ <ul>
+ <li><a href="html-experimente/fast-leer-mit-menü.html" th:href="@{/potemkin/html-experimente/fast-leer-mit-menü.html}">Fast leere Seite mit Menü</a></li>
+ <li><a href="html-experimente/fast-leer-mit-menü-und-marginalinhalt.html" th:href="@{/potemkin/html-experimente/fast-leer-mit-menü-und-marginalinhalt.html}">Fast leere Seite mit Menü und Marginal-Inhalt</a></li>
+ <li><a href="html-experimente/fast-leer-kein-menü.html" th:href="@{/potemkin/html-experimente/fast-leer-kein-menü.html}">Fast leere Seite ohne Menü</a></li>
+ <li><a href="html-experimente/fast-leer-kein-menü-aber-marginalinhalt.html" th:href="@{/potemkin/html-experimente/fast-leer-kein-menü-aber-marginalinhalt.html}">Fast leere Seite ohne Menü aber mit Marginal-Inhalt</a></li>
+ <li><a href="html-experimente/fast-leer-einspaltig.html" th:href="@{/potemkin/html-experimente/fast-leer-einspaltig.html}">Fast leere einspaltige Seite</a></li>
+ <li><a href="html-experimente/fast-leer-einspaltig-mit-marginalinhalt.html" th:href="@{/potemkin/html-experimente/fast-leer-einspaltig-mit-marginalinhalt.html}">Fast leere einspaltige Seite mit Marginal-Inhalt</a></li>
+ <li><a href="html-experimente/breadcrumb.html" th:href="@{/potemkin/html-experimente/breadcrumb.html}">Seite mit sehr langem Breadcrumb</a></li>
+ </ul>
+ <h2>Layout-Variationen</h2>
+ <ul>
+ <li><a href="html-experimente/kein-layout.html" th:href="@{/potemkin/html-experimente/kein-layout.html}">Alle Stylings deaktiviert</a></li>
+ <li><a href="html-experimente/basis-layout.html" th:href="@{/potemkin/html-experimente/basis-layout.html}">Nur das Basis-Layout</a></li>
+ <li><a href="html-experimente/druck-layout.html" th:href="@{/potemkin/html-experimente/druck-layout.html}">Die für den Ausdruck angepasste Ansicht</a></li>
+ <li><a href="html-experimente/tiny.html" th:href="@{/potemkin/html-experimente/tiny.html}">Layout für sehr kleine Bildschirmgrößen</a></li>
+ <li><a href="html-experimente/phone.html" th:href="@{/potemkin/html-experimente/phone.html}">Layout für Smartphones</a></li>
+ <li><a href="html-experimente/tablet.html" th:href="@{/potemkin/html-experimente/tablet.html}">Layout für Tablets</a></li>
+ </ul>
+ <h2>Testseiten für einzelne Seiten-Bestandteile</h2>
+ <ul>
+ <li><a href="html-experimente/seitenaufteilung.html" th:href="@{/potemkin/html-experimente/seitenaufteilung.html}">Nur das Basis-Layout und die Seitenaufteilung</a></li>
+ <li><a href="html-experimente/seitenkopf.html" th:href="@{/potemkin/html-experimente/seitenkopf.html}">Nur das Basis-Layout und der Seitenkopf</a></li>
+ </ul>
+ <h2>Anderer Krams...</h2>
+ <ul>
+ <li><a href="html-experimente/testlab.html" th:href="@{/potemkin/html-experimente/testlab.html}">Seite mit Breiten-Markierungen für den Tests von Media-Queries (Beispiel)</a></li>
+ </ul>
+ </article>
--- /dev/null
+---
+title: "HTML-Experimente - Basis-Layout"
+linkTitle: "Basis-Layout"
+url: /potemkin/html-experimente/basis-layout.html
+---
+<main class="maincontent">
+ <header><h1>Nur das Basis-Layout</h1></header>
+ <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
+ </main>
+<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
+ MARGINAL-CONTENT
+ </aside>
--- /dev/null
+---
+title: "HTML-Experimente - Langer Breadcrumb"
+linkTitle: "Langer Breadcrumb"
+url: /potemkin/html-experimente/breadcrumb.html
+---
+<ol id="crumbs">
+ <li class="b"><a class="b" href="../index.html" th:href="@{/index.html}">Home</a></li>
+ <li class="b"><a class="b" href="../projects.html" th:href="@{/projects.html}">Projects</a></li>
+ <li class="b"><a class="b" href="html-experimente.html" th:href="@{/potemkin/html-experimente.html}">HTML-Experimente</a></li>
+ <li class="b"><strong class="b">Dies ist ein Seite mit einem unendlich langen Breadcrumb-Eintrag der bestimmt nicht in den vorgesehenen Platz passt</strong></li>
+ </ol>
+<article class="maincontent">
+ <header><h1>Seite mit sehr langem Breadcrumb</h1></header>
+ <p>Eine Seite mit einem extrem langen Breadcrumb...</p>
+ </article>
--- /dev/null
+---
+title: "HTML-Experimente - Druck-Layout"
+linkTitle: "Druck-Layout"
+url: /potemkin/html-experimente/druck-layout.html
+---
+<main class="maincontent">
+ <header><h1>Die für den Ausdruck angepasste Ansicht</h1></header>
+ <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
+ </main>
+<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
+ MARGINAL-CONTENT
+ </aside>
--- /dev/null
+---
+title: "This Page Will Raise An Error"
+url: /potemkin/html-experimente/error.html
+---
+<p>This page will raise an error, because the <strong><code>uri</code></strong> is set to an unknown value...</p>
--- /dev/null
+---
+title: "HTML-Experimente - Fast leere einspaltige Seite mit Marginalinhalt"
+linkTitle: "Fast leere einspaltige Seite mit Marginalinhalt"
+url: /potemkin/html-experimente/fast-leer-einspaltig-mit-marginalinhalt.html
+---
+<nav id="navigation">
+ <hr class="n">
+ <a class="hide" href="#top" title="Show Content">Jump back to the top of the page</a>
+ <h1 class="nav">Navigation</h1>
+ <h2 class="nav menu">Section-Menu</h2>
+ <ul class="cf" id="menu">
+ <li class="m blog"><a class="m" href="../blog/" th:href="@{/blog/}">Blog</a></li>
+ <li class="m projects"><a class="m selected" href="../projects.html" th:href="@{/projects.html}">Projects</a></li>
+ <li class="m about"><a class="m" href="../about.html" th:href="@{/about.html}">About</a></li>
+ </ul>
+ </nav>
+<article class="maincontent">
+ <header><h1>Fast leere einspaltige Seite mit Marginalinhalt</h1></header>
+ <p><strong>KAPUTT:</strong> siehe Erklärung im Commit</p>
+ </article>
+<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
+ MARGINAL-CONTENT
+ </aside>
--- /dev/null
+---
+title: "HTML-Experimente - Fast leere einspaltige Seite"
+linkTitle: "Fast leere einspaltige Seite"
+url: /potemkin/html-experimente/fast-leer-einspaltig.html
+---
+<nav id="navigation">
+ <hr class="n">
+ <a class="hide" href="#top" title="Show Content">Jump back to the top of the page</a>
+ <h1 class="nav">Navigation</h1>
+ <h2 class="nav menu">Section-Menu</h2>
+ <ul class="cf" id="menu">
+ <li class="m blog"><a class="m" href="../blog/" th:href="@{/blog/}">Blog</a></li>
+ <li class="m projects"><a class="m selected" href="../projects.html" th:href="@{/projects.html}">Projects</a></li>
+ <li class="m about"><a class="m" href="../about.html" th:href="@{/about.html}">About</a></li>
+ </ul>
+ </nav>
+<article class="maincontent">
+ <header><h1>Fast leere einspaltige Seite</h1></header>
+ <p><strong>KAPUTT:</strong> siehe Erklärung im Commit</p>
+ </article>
--- /dev/null
+---
+title: "HTML-Experimente - Fast leere Seite ohne Menü aber mit Marginalspalte"
+linkTitle: "Fast leere Seite ohne Menü aber mit Marginalspalte"
+url: /potemkin/html-experimente/fast-leer-kein-menü-aber-marginalinhalt.html
+---
+<nav id="navigation">
+ <hr class="n">
+ <a class="hide" href="#top" title="Show Content">Jump back to the top of the page</a>
+ <h1 class="nav">Navigation</h1>
+ <h2 class="nav menu">Section-Menu</h2>
+ <ul class="cf" id="menu">
+ <li class="m blog"><a class="m" href="../blog/" th:href="@{/blog/}">Blog</a></li>
+ <li class="m projects"><a class="m selected" href="../projects.html" th:href="@{/projects.html}">Projects</a></li>
+ <li class="m about"><a class="m" href="../about.html" th:href="@{/about.html}">About</a></li>
+ </ul>
+ </nav>
+<article class="maincontent">
+ <header><h1>Fast leere Seite ohne Menü aber mit Marginalinhalt</h1></header>
+ <p>Ein ganz bischen Text...</p>
+ </article>
+<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
+ MARGINAL-CONTENT
+ </aside>
--- /dev/null
+---
+title: "HTML-Experimente - Fast leere Seite ohne Menü"
+linkTitle: "Fast leere Seite ohne Menü"
+url: /potemkin/html-experimente/fast-leer-kein-menü.html
+---
+<nav id="navigation">
+ <hr class="n">
+ <a class="hide" href="#top" title="Show Content">Jump back to the top of the page</a>
+ <h1 class="nav">Navigation</h1>
+ <h2 class="nav menu">Section-Menu</h2>
+ <ul class="cf" id="menu">
+ <li class="m blog"><a class="m" href="../blog/" th:href="@{/blog/}">Blog</a></li>
+ <li class="m projects"><a class="m selected" href="../projects.html" th:href="@{/projects.html}">Projects</a></li>
+ <li class="m about"><a class="m" href="../about.html" th:href="@{/about.html}">About</a></li>
+ </ul>
+ </nav>
+<article class="maincontent">
+ <header><h1>Fast leere Seite ohne Menü</h1></header>
+ <p>Ein ganz bischen Text...</p>
+ </article>
--- /dev/null
+---
+title: "HTML-Experimente - Fast leere Seite mit Menü und Marginalinhalt"
+linkTitle: "Fast leere Seite mit Menü und Marginalinhalt"
+url: /potemkin/html-experimente/fast-leer-mit-menü-und-marginalinhalt.html
+---
+<article class="maincontent">
+ <header><h1>Fast leere Seite mit Menü und Marginalinhalt</h1></header>
+ <p>Ein ganz bischen Text...</p>
+ </article>
+<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
+ MARGINAL-CONTENT
+ </aside>
--- /dev/null
+---
+title: "HTML-Experimente - Fast leere Seite mit Menü"
+linkTitle: "Fast leere Seite mit Menü"
+url: /potemkin/html-experimente/fast-leer-mit-menü.html
+---
+<article class="maincontent">
+ <header><h1>Fast leere Seite mit Menü</h1></header>
+ <p>Ein ganz bischen Text...</p>
+ </article>
--- /dev/null
+---
+title: "HTML-Experimente - Formulare"
+linkTitle: "Formulare"
+url: /potemkin/html-experimente/formulare.html
+---
+<article class="maincontent">
+ <header><h1>Formulare</h1></header>
+ <form action="#" class="form" method="get">
+ <h2 class="f">Anzeigetext</h2>
+ <div class="f textarea">
+ <label class="f info" for="textarea_01">Geben Sie hier Ihren Anzeigentext ein.</label>
+ <textarea class="f error" cols="50" id="textarea_01" rows="10">Eingegebener Text</textarea>
+ <span class="f error"><span class="e">< </span><strong class="e">Fehler:</strong> Es wurde kein Text für die Anzeige eingegeben!</span>
+ </div>
+ </form>
+ <form action="#" class="form" method="get">
+ <h2 class="f">Textformatierung</h2>
+ <fieldset class="f radiobutton cf">
+ <legend class="f info">
+ Die zusätzlichen Gestaltungsoptionen sind nur für das Magazin wählbar.<br>
+ Online erscheint die Anzeige als normaler Fließtext.
+ </legend>
+ <hr class="f">
+ <div class="col2">
+ <div class="f">
+ <input class="f" id="radio_tbox_01" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_01">normaler Fließtext</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_02" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_02">Text zentriert</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_03" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_03">Text fett, Negativdruck</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_04" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_04">Text fett</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_05" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_05">Text fett und rot</label>
+ </div>
+ </div>
+ <div class="col2">
+ <div class="f">
+ <input class="f" id="radio_tbox_06" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_06">Text fett, Anzeige blau hinterlegt</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_07" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_07">Text fett, Anzeige gelb hinterlegt</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_08" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_08">Anzeige schwarz eingerahmt</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_09" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_09">Anzeige rot eingerahmt</label>
+ </div>
+ </div>
+ </fieldset>
+ </form>
+ <form action="#" class="form" method="get">
+ <h2 class="f">Einspaltige Radiobuttons...</h2>
+ <fieldset class="f radiobutton">
+ <div class="f">
+ <input class="f" id="radio_tbox_b01" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_b01">Dies ist eine etwas länglichere Beschreibung der auswählbaren Option</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_b02" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_b02">Option X</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_b03" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_b03">Dies ist eine sehr, sehr lange Beschreibung der auswählbaren Option - so lang, dass sie am Ende hoffentlich umbricht...</label>
+ </div>
+ </fieldset>
+ <hr class="f">
+ <div class="f submit">
+ <input class="f" type="submit" value="> zur Übersicht">
+ <input class="f left" type="submit" value="< zurück">
+ <input class="f" type="submit" value="> weiter">
+ </div>
+ </form>
+ <form action="#" class="form" method="get">
+ <h2 class="f">Bild</h2>
+ <fieldset class="f checkbox">
+ <legend class="f">
+ Du kannst Deiner Anzeige ein Bild hinzufügen.
+ Das Bild erscheint nur online.
+ Im Magazin erscheint die Kleinanzeige mit Hinweis auf das Onlinebild.
+ </legend>
+ <hr class="f">
+ <div class="f">
+ <input class="f" id="checkbox_tbox_01" name="checkbox_tbox" type="checkbox">
+ <label class="f" for="checkbox_tbox_01">Ich möchte ein Bild zu dieser Anzeige hinzufügen</label>
+ </div>
+ <div class="f">
+ <input class="f" id="checkbox_tbox_02" name="checkbox_tbox" type="checkbox">
+ <label class="f" for="checkbox_tbox_02">Ich habe die AGB für das Hochladen von Bildern gelesen und akzeptiere diese</label>
+ </div>
+ </fieldset>
+ </form>
+ <form action="#" class="form" method="get">
+ <h2 class="f">Alleinstehende Checkbox</h2>
+ <div class="f checkbox">
+ <input class="f" id="checkbox_tbox_03" name="checkbox_tbox" type="checkbox">
+ <label class="f" for="checkbox_tbox_03">Ich möchte ein Bild zu dieser Anzeige hinzufügen</label>
+ </div>
+ </form>
+ <form action="#" class="form" method="get">
+ <h2 class="f">Kundendaten</h2>
+ <p class="f required">
+ <strong class="r">Pflichtfelder</strong> sind mit einem
+ <strong class="r symbol">*</strong> markiert.
+ </p>
+ <div class="f text required">
+ <label class="f" for="text_tbox_01"><span class="required">* </span>Nachname</label>
+ <input class="f" id="text_tbox_01" type="text" value="Mustermann">
+ </div>
+ <div class="f text required">
+ <label class="f" for="text_tbox_02">Vorname</label>
+ <input class="f" id="text_tbox_02" type="text" value="Max">
+ </div>
+ <div class="f select required">
+ <label class="f" for="text_tbox_03"><span class="required">* </span>Ort</label>
+ <select class="f" id="text_tbox_03">
+ <option>Dortmund</option>
+ <option>Bochum</option>
+ <option>Essen</option>
+ <option>Mönchengladbach</option>
+ <option>Oberhausen</option>
+ <option>Castrop-Rauxel</option>
+ <option>Düsseldorf</option>
+ </select>
+ </div>
+ <div class="f text required">
+ <label class="f" for="text_tbox_04"><span class="required">* </span>Straße/Hausnr.</label>
+ <input class="f error" id="text_tbox_04" type="text" value="">
+ <span class="f error"><span class="e">< </span><strong class="e">Fehler:</strong> Dies ist ein Pflichtfeld!</span>
+ </div>
+ <div class="f text required">
+ <label class="f" for="text_tbox_05"><span class="required">* </span>Postleitzahl</label>
+ <input class="f" id="text_tbox_05" type="text" value="">
+ </div>
+ <div class="f text required">
+ <label class="f" for="text_tbox_06">Telefon</label>
+ <input class="f" id="text_tbox_06" type="text" value="">
+ </div>
+ <hr class="f">
+ <div class="f submit">
+ <input class="f" type="submit" value="> weiter">
+ </div>
+ </form>
+ <form action="#" class="form" method="get">
+ <h2 class="f">Anzeige regionalisieren</h2>
+ <p class="f">
+ Indem Du Deine Kleinanzeige einer Stadt zuordnest, können Interessenten
+ diese online leichter finden, wenn sie nur nach Kleinanzeigen aus
+ bestimmten Städten suchen.
+ Du kannst auch keine Stadt zuordnen, dann wird die Kleinanzeige von
+ diesen Interessenten aber auch nicht gefunden.
+ </p>
+ <hr class="f">
+ <div class="f text">
+ <label class="f" for="city">Stadt</label>
+ <input class="f" id="city" type="text">
+ <p class="f info">
+ Das Feld leer lassen, wenn die Anzeige nicht regionalisiert werden soll.
+ </p>
+ </div>
+ </form>
+ <form action="#" class="form" method="get">
+ <h2 class="f">Ein Passwort-Eingabe-Feld</h2>
+ <div class="f text required">
+ <label class="f" for="text_tbox_05"><span class="required">* </span>Passwort</label>
+ <input class="f" id="text_tbox_05" type="password" value="t">
+ </div>
+ </form>
+ <form action="#" class="form" method="get">
+ <h2 class="f">Lade das Bild hoch</h2>
+ <p class="f info">
+ Du kannst ein Bild im JPEG- oder PNG-Format hochladen.
+ Das Bild darf nicht größer als 8 MByte sein.
+ </p>
+ <div class="f file required">
+ <label class="f" for="file_tbox_01"><span class="required">* </span>Bild</label>
+ <input class="f" id="file_tbox_01" type="file">
+ </div>
+ <hr class="f">
+ <div class="f submit">
+ <input class="f" type="submit" value="> Doch kein Bild">
+ <input class="f" type="submit" value="> Bild hochladen">
+ </div>
+ </form>
+ <div class="form">
+ <h2 class="f">Antworten</h2>
+ <p class="f required">
+ <strong class="r">Pflichtfelder</strong> sind mit einem
+ <strong class="r symbol">*</strong> markiert.
+ </p>
+ <div class="f text required">
+ <label class="f" for="replyTo"><span class="required">*</span> Antwort-Adresse</label>
+ <input class="f" id="replyTo" name="replyTo" tabindex="1" type="text" value="">
+ </div>
+ <div class="f text required">
+ <label class="f" for="replyTo"><span class="required">*</span> Adresse wiederholen</label>
+ <input class="f" id="replyToRepeated" name="replyToRepeated" tabindex="2" type="text" value="">
+ </div>
+ <div class="f text required">
+ <label class="f" for="subject"><span class="required">*</span> Betreff</label>
+ <input class="f" id="subject" name="subject" tabindex="3" type="text" value="">
+ </div>
+ <div class="f textarea required">
+ <label class="f" for="text"><span class="required">*</span> Nachricht</label>
+ <textarea class="f" cols="20" id="text" name="text" rows="15" tabindex="4"></textarea>
+ </div>
+ <div class="f checkbox">
+ <input checked="checked" class="f" id="attachment1" name="attachment" tabindex="4" type="checkbox" value="true"><input name="_attachment" type="hidden" value="on">
+ <label class="f" for="attachment">Ich möchte eine Datei an die E-Mail anhängen.</label>
+ </div>
+ <div class="f checkbox">
+ <input checked="checked" class="f" id="copy1" name="copy" tabindex="5" type="checkbox" value="true"><input name="_copy" type="hidden" value="on">
+ <label class="f" for="copy">Ich möchte eine Kopie der Nachricht zugesendet bekommen.</label>
+ </div>
+ </div>
+ <div class="form cf">
+ <div class="col2 left">
+ <h2 class="f">Weiter mit Anmeldung</h2>
+ <div class="f text">
+ <label class="f" for="username">Benutzername</label>
+ <input class="f" id="username" name="username" tabindex="6" type="text">
+ </div>
+ <div class="f text">
+ <label class="f" for="password">Passwort</label>
+ <input class="f" id="password" name="password" tabindex="7" type="password">
+ </div>
+ </div>
+ <div class="col2 right">
+ <h2 class="f">Weiter ohne Anmeldung</h2>
+ <!-- <a href="/kleinanzeigen/37431/lust+.html" title="Zu schwer? Hier klicken um das Bild zu wechseln!"><img src="/img/captcha.jpg" alt="Captcha" width="120" height="60" /></a> -->
+ <div class="f captcha cf">
+ <span class="f">Was steht da?</span>
+ <img alt="Captcha" class="f" height="60" src="/img/captcha.jpg" width="120">
+ </div>
+ <div class="f text">
+ <label class="f" for="captcha">Lösung</label>
+ <input class="f" id="captcha" name="captcha" tabindex="8" type="text">
+ </div>
+ </div>
+ </div>
+ </article>
--- /dev/null
+---
+title: "HTML-Experimente - Kein Layout"
+linkTitle: "Kein Layout"
+url: /potemkin/html-experimente/kein-layout.html
+---
+<main class="maincontent">
+ <header><h1>Alle Stylings deaktiviert</h1></header>
+ <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
+ </main>
+<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
+ MARGINAL-CONTENT
+ </aside>
--- /dev/null
+---
+title: "HTML-Experimente - Layout PHONE"
+linkTitle: "Layout PHONE"
+url: /potemkin/html-experimente/phone.html
+---
+<main class="maincontent">
+ <header><h1>Layout für Smartphones</h1></header>
+ <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
+ </main>
+<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
+ MARGINAL-CONTENT
+ </aside>
--- /dev/null
+---
+title: "HTML-Experimente - Basis-Layout & Seitenaufteilung"
+linkTitle: "Basis-Layout & Seitenaufteilung"
+url: /potemkin/html-experimente/seitenaufteilung.html
+---
+<main class="maincontent">
+ <header><h1>Nur das Basis-Layout und die Seitenaufteiltung</h1></header>
+ <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
+ </main>
+<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
+ MARGINAL-CONTENT
+ </aside>
--- /dev/null
+---
+title: "HTML-Experimente - Basis-Layout & Seitenkopf"
+linkTitle: "Basis-Layout & Seitenkopf"
+url: /potemkin/html-experimente/seitenkopf.html
+---
+<main class="maincontent">
+ <header><h1>Nur das Basis-Layout und der Seitenkopf</h1></header>
+ <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
+ </main>
+<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
+ MARGINAL-CONTENT
+ </aside>
--- /dev/null
+---
+title: "HTML-Experimente - Symbol-Font"
+linkTitle: "Symbol-Font"
+url: /potemkin/html-experimente/symbole.html
+---
+<article class="maincontent">
+ <header><h1>Symbol-Font</h1></header>
+ <h2>100%</h2>
+ <div class="symbols">
+ <span class="e600"></span>
+ <span class="e601"></span>
+ <span class="e602"></span>
+ <span class="e603"></span>
+ <span class="e604"></span>
+ <span class="e605"></span>
+ <span class="e606"></span>
+ <span class="e607"></span>
+ <span class="e608"></span>
+ <span class="e609"></span>
+ <span class="e60a"></span>
+ <span class="e60b"></span>
+ <span class="e60c"></span>
+ <span class="e60d"></span>
+ <span class="e60e"></span>
+ <span class="e60f"></span>
+ <span class="e610"></span>
+ <span class="e611"></span>
+ <span class="e612"></span>
+ <span class="e613"></span>
+ <span class="e614"></span>
+ <span class="e615"></span>
+ <span class="e616"></span>
+ <span class="e617"></span>
+ <span class="e618"></span>
+ <span class="e619"></span>
+ <span class="e61a"></span>
+ <span class="e61b"></span>
+ <span class="e61c"></span>
+ <span class="e61d"></span>
+ <span class="e61e"></span>
+ <span class="e61f"></span>
+ <span class="e620"></span>
+ <span class="e621"></span>
+ <span class="e622"></span>
+ <span class="e623"></span>
+ <span class="e624"></span>
+ <span class="e625"></span>
+ <span class="e626"></span>
+ <span class="e627"></span>
+ <span class="e628"></span>
+ <span class="e629"></span>
+ <span class="e62a"></span>
+ <span class="e62b"></span>
+ <span class="e62c"></span>
+ <span class="e62d"></span>
+ <span class="e62e"></span>
+ <span class="e62f"></span>
+ <span class="e630"></span>
+ <span class="e631"></span>
+ <span class="e632"></span>
+ <span class="e633"></span>
+ <span class="e634"></span>
+ <span class="e635"></span>
+ <span class="e636"></span>
+ <span class="e637"></span>
+ <span class="e638"></span>
+ <span class="e639"></span>
+ <span class="e63a"></span>
+ <span class="e63b"></span>
+ <span class="e63c"></span>
+ <span class="e63d"></span>
+ <span class="e63e"></span>
+ <span class="e63f"></span>
+ <span class="e640"></span>
+ <span class="e641"></span>
+ <span class="e642"></span>
+ <span class="e643"></span>
+ <span class="e644"></span>
+ <span class="e645"></span>
+ <span class="e646"></span>
+ <span class="e647"></span>
+ <span class="e648"></span>
+ <span class="e649"></span>
+ <span class="e64a"></span>
+ <span class="e64b"></span>
+ </div>
+ <h2>200%</h2>
+ <div class="symbols" style="font-size: 200%; line-height: 1.5em">
+ <span class="e600"></span>
+ <span class="e601"></span>
+ <span class="e602"></span>
+ <span class="e603"></span>
+ <span class="e604"></span>
+ <span class="e605"></span>
+ <span class="e606"></span>
+ <span class="e607"></span>
+ <span class="e608"></span>
+ <span class="e609"></span>
+ <span class="e60a"></span>
+ <span class="e60b"></span>
+ <span class="e60c"></span>
+ <span class="e60d"></span>
+ <span class="e60e"></span>
+ <span class="e60f"></span>
+ <span class="e610"></span>
+ <span class="e611"></span>
+ <span class="e612"></span>
+ <span class="e613"></span>
+ <span class="e614"></span>
+ <span class="e615"></span>
+ <span class="e616"></span>
+ <span class="e617"></span>
+ <span class="e618"></span>
+ <span class="e619"></span>
+ <span class="e61a"></span>
+ <span class="e61b"></span>
+ <span class="e61c"></span>
+ <span class="e61d"></span>
+ <span class="e61e"></span>
+ <span class="e61f"></span>
+ <span class="e620"></span>
+ <span class="e621"></span>
+ <span class="e622"></span>
+ <span class="e623"></span>
+ <span class="e624"></span>
+ <span class="e625"></span>
+ <span class="e626"></span>
+ <span class="e627"></span>
+ <span class="e628"></span>
+ <span class="e629"></span>
+ <span class="e62a"></span>
+ <span class="e62b"></span>
+ <span class="e62c"></span>
+ <span class="e62d"></span>
+ <span class="e62e"></span>
+ <span class="e62f"></span>
+ <span class="e630"></span>
+ <span class="e631"></span>
+ <span class="e632"></span>
+ <span class="e633"></span>
+ <span class="e634"></span>
+ <span class="e635"></span>
+ <span class="e636"></span>
+ <span class="e637"></span>
+ <span class="e638"></span>
+ <span class="e639"></span>
+ <span class="e63a"></span>
+ <span class="e63b"></span>
+ <span class="e63c"></span>
+ <span class="e63d"></span>
+ <span class="e63e"></span>
+ <span class="e63f"></span>
+ <span class="e640"></span>
+ <span class="e641"></span>
+ <span class="e642"></span>
+ <span class="e643"></span>
+ <span class="e644"></span>
+ <span class="e645"></span>
+ <span class="e646"></span>
+ <span class="e647"></span>
+ <span class="e648"></span>
+ <span class="e649"></span>
+ <span class="e64a"></span>
+ <span class="e64b"></span>
+ </div>
+ <h2>300%</h2>
+ <div class="symbols" style="font-size: 300%; line-height: 1.5em">
+ <span class="e600"></span>
+ <span class="e601"></span>
+ <span class="e602"></span>
+ <span class="e603"></span>
+ <span class="e604"></span>
+ <span class="e605"></span>
+ <span class="e606"></span>
+ <span class="e607"></span>
+ <span class="e608"></span>
+ <span class="e609"></span>
+ <span class="e60a"></span>
+ <span class="e60b"></span>
+ <span class="e60c"></span>
+ <span class="e60d"></span>
+ <span class="e60e"></span>
+ <span class="e60f"></span>
+ <span class="e610"></span>
+ <span class="e611"></span>
+ <span class="e612"></span>
+ <span class="e613"></span>
+ <span class="e614"></span>
+ <span class="e615"></span>
+ <span class="e616"></span>
+ <span class="e617"></span>
+ <span class="e618"></span>
+ <span class="e619"></span>
+ <span class="e61a"></span>
+ <span class="e61b"></span>
+ <span class="e61c"></span>
+ <span class="e61d"></span>
+ <span class="e61e"></span>
+ <span class="e61f"></span>
+ <span class="e620"></span>
+ <span class="e621"></span>
+ <span class="e622"></span>
+ <span class="e623"></span>
+ <span class="e624"></span>
+ <span class="e625"></span>
+ <span class="e626"></span>
+ <span class="e627"></span>
+ <span class="e628"></span>
+ <span class="e629"></span>
+ <span class="e62a"></span>
+ <span class="e62b"></span>
+ <span class="e62c"></span>
+ <span class="e62d"></span>
+ <span class="e62e"></span>
+ <span class="e62f"></span>
+ <span class="e630"></span>
+ <span class="e631"></span>
+ <span class="e632"></span>
+ <span class="e633"></span>
+ <span class="e634"></span>
+ <span class="e635"></span>
+ <span class="e636"></span>
+ <span class="e637"></span>
+ <span class="e638"></span>
+ <span class="e639"></span>
+ <span class="e63a"></span>
+ <span class="e63b"></span>
+ <span class="e63c"></span>
+ <span class="e63d"></span>
+ <span class="e63e"></span>
+ <span class="e63f"></span>
+ <span class="e640"></span>
+ <span class="e641"></span>
+ <span class="e642"></span>
+ <span class="e643"></span>
+ <span class="e644"></span>
+ <span class="e645"></span>
+ <span class="e646"></span>
+ <span class="e647"></span>
+ <span class="e648"></span>
+ <span class="e649"></span>
+ <span class="e64a"></span>
+ <span class="e64b"></span>
+ </div>
+ <h2>400%</h2>
+ <div class="symbols" style="font-size: 400%; line-height: 1.5em">
+ <span class="e600"></span>
+ <span class="e601"></span>
+ <span class="e602"></span>
+ <span class="e603"></span>
+ <span class="e604"></span>
+ <span class="e605"></span>
+ <span class="e606"></span>
+ <span class="e607"></span>
+ <span class="e608"></span>
+ <span class="e609"></span>
+ <span class="e60a"></span>
+ <span class="e60b"></span>
+ <span class="e60c"></span>
+ <span class="e60d"></span>
+ <span class="e60e"></span>
+ <span class="e60f"></span>
+ <span class="e610"></span>
+ <span class="e611"></span>
+ <span class="e612"></span>
+ <span class="e613"></span>
+ <span class="e614"></span>
+ <span class="e615"></span>
+ <span class="e616"></span>
+ <span class="e617"></span>
+ <span class="e618"></span>
+ <span class="e619"></span>
+ <span class="e61a"></span>
+ <span class="e61b"></span>
+ <span class="e61c"></span>
+ <span class="e61d"></span>
+ <span class="e61e"></span>
+ <span class="e61f"></span>
+ <span class="e620"></span>
+ <span class="e621"></span>
+ <span class="e622"></span>
+ <span class="e623"></span>
+ <span class="e624"></span>
+ <span class="e625"></span>
+ <span class="e626"></span>
+ <span class="e627"></span>
+ <span class="e628"></span>
+ <span class="e629"></span>
+ <span class="e62a"></span>
+ <span class="e62b"></span>
+ <span class="e62c"></span>
+ <span class="e62d"></span>
+ <span class="e62e"></span>
+ <span class="e62f"></span>
+ <span class="e630"></span>
+ <span class="e631"></span>
+ <span class="e632"></span>
+ <span class="e633"></span>
+ <span class="e634"></span>
+ <span class="e635"></span>
+ <span class="e636"></span>
+ <span class="e637"></span>
+ <span class="e638"></span>
+ <span class="e639"></span>
+ <span class="e63a"></span>
+ <span class="e63b"></span>
+ <span class="e63c"></span>
+ <span class="e63d"></span>
+ <span class="e63e"></span>
+ <span class="e63f"></span>
+ <span class="e640"></span>
+ <span class="e641"></span>
+ <span class="e642"></span>
+ <span class="e643"></span>
+ <span class="e644"></span>
+ <span class="e645"></span>
+ <span class="e646"></span>
+ <span class="e647"></span>
+ <span class="e648"></span>
+ <span class="e649"></span>
+ <span class="e64a"></span>
+ <span class="e64b"></span>
+ </div>
+ <h2>500%</h2>
+ <div class="symbols" style="font-size: 500%; line-height: 1.5em">
+ <span class="e600"></span>
+ <span class="e601"></span>
+ <span class="e602"></span>
+ <span class="e603"></span>
+ <span class="e604"></span>
+ <span class="e605"></span>
+ <span class="e606"></span>
+ <span class="e607"></span>
+ <span class="e608"></span>
+ <span class="e609"></span>
+ <span class="e60a"></span>
+ <span class="e60b"></span>
+ <span class="e60c"></span>
+ <span class="e60d"></span>
+ <span class="e60e"></span>
+ <span class="e60f"></span>
+ <span class="e610"></span>
+ <span class="e611"></span>
+ <span class="e612"></span>
+ <span class="e613"></span>
+ <span class="e614"></span>
+ <span class="e615"></span>
+ <span class="e616"></span>
+ <span class="e617"></span>
+ <span class="e618"></span>
+ <span class="e619"></span>
+ <span class="e61a"></span>
+ <span class="e61b"></span>
+ <span class="e61c"></span>
+ <span class="e61d"></span>
+ <span class="e61e"></span>
+ <span class="e61f"></span>
+ <span class="e620"></span>
+ <span class="e621"></span>
+ <span class="e622"></span>
+ <span class="e623"></span>
+ <span class="e624"></span>
+ <span class="e625"></span>
+ <span class="e626"></span>
+ <span class="e627"></span>
+ <span class="e628"></span>
+ <span class="e629"></span>
+ <span class="e62a"></span>
+ <span class="e62b"></span>
+ <span class="e62c"></span>
+ <span class="e62d"></span>
+ <span class="e62e"></span>
+ <span class="e62f"></span>
+ <span class="e630"></span>
+ <span class="e631"></span>
+ <span class="e632"></span>
+ <span class="e633"></span>
+ <span class="e634"></span>
+ <span class="e635"></span>
+ <span class="e636"></span>
+ <span class="e637"></span>
+ <span class="e638"></span>
+ <span class="e639"></span>
+ <span class="e63a"></span>
+ <span class="e63b"></span>
+ <span class="e63c"></span>
+ <span class="e63d"></span>
+ <span class="e63e"></span>
+ <span class="e63f"></span>
+ <span class="e640"></span>
+ <span class="e641"></span>
+ <span class="e642"></span>
+ <span class="e643"></span>
+ <span class="e644"></span>
+ <span class="e645"></span>
+ <span class="e646"></span>
+ <span class="e647"></span>
+ <span class="e648"></span>
+ <span class="e649"></span>
+ <span class="e64a"></span>
+ <span class="e64b"></span>
+ </div>
+ </article>
--- /dev/null
+---
+title: "HTML-Experimente - Layout TABLET"
+linkTitle: "Layout TABLET"
+url: /potemkin/html-experimente/tablet.html
+---
+<main class="maincontent">
+ <header><h1>Layout für Tablets</h1></header>
+ <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
+ </main>
+<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
+ MARGINAL-CONTENT
+ </aside>
--- /dev/null
+---
+title: "HTML-Experimente - Media-Query-Test: BEISPIEL"
+linktTitle: "Media-Query-Test: BEISPIEL"
+url: /potemkin/html-experimente/testlab.html
+---
+<div class="content">
+ <form action="#" class="testlab form" method="get">
+ <h2 class="f">Anzeigetext</h2>
+ <div class="f textarea">
+ <label class="f info" for="textarea_01">Geben Sie hier Ihren Anzeigentext ein.</label>
+ <textarea class="f error" cols="50" id="textarea_01" rows="10">Eingegebener Text</textarea>
+ <span class="f error"><span class="e">< </span><strong class="e">Fehler:</strong> Es wurde kein Text für die Anzeige eingegeben!</span>
+ </div>
+ </form>
+ <form action="#" class="testlab form" method="get">
+ <h2 class="f">Textformatierung</h2>
+ <fieldset class="f radiobutton cf">
+ <legend class="f info">
+ Die zusätzlichen Gestaltungsoptionen sind nur für das Magazin wählbar.<br>
+ Online erscheint die Anzeige als normaler Fließtext.
+ </legend>
+ <hr class="f">
+ <div class="col2">
+ <div class="f">
+ <input class="f" id="radio_tbox_01" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_01">normaler Fließtext</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_02" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_02">Text zentriert</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_03" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_03">Text fett, Negativdruck</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_04" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_04">Text fett</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_05" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_05">Text fett und rot</label>
+ </div>
+ </div>
+ <div class="col2">
+ <div class="f">
+ <input class="f" id="radio_tbox_06" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_06">Text fett, Anzeige blau hinterlegt</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_07" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_07">Text fett, Anzeige gelb hinterlegt</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_08" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_08">Anzeige schwarz eingerahmt</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_09" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_09">Anzeige rot eingerahmt</label>
+ </div>
+ </div>
+ </fieldset>
+ </form>
+ <form action="#" class="testlab form" method="get">
+ <h2 class="f">Einspaltige Radiobuttons...</h2>
+ <fieldset class="f radiobutton">
+ <div class="f">
+ <input class="f" id="radio_tbox_b01" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_b01">Dies ist eine etwas länglichere Beschreibung der auswählbaren Option</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_b02" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_b02">Option X</label>
+ </div>
+ <div class="f">
+ <input class="f" id="radio_tbox_b03" name="radio_tbox" type="radio">
+ <label class="f" for="radio_tbox_b03">Dies ist eine sehr, sehr lange Beschreibung der auswählbaren Option - so lang, dass sie am Ende hoffentlich umbricht...</label>
+ </div>
+ </fieldset>
+ <hr class="f">
+ <div class="f submit">
+ <input class="f" type="submit" value="> zur Übersicht">
+ <input class="f left" type="submit" value="< zurück">
+ <input class="f" type="submit" value="> weiter">
+ </div>
+ </form>
+ <form action="#" class="testlab form" method="get">
+ <h2 class="f">Bild</h2>
+ <fieldset class="f checkbox">
+ <legend class="f">
+ Du kannst Deiner Anzeige ein Bild hinzufügen.
+ Das Bild erscheint nur online.
+ Im Magazin erscheint die Kleinanzeige mit Hinweis auf das Onlinebild.
+ </legend>
+ <hr class="f">
+ <div class="f">
+ <input class="f" id="checkbox_tbox_01" name="checkbox_tbox" type="checkbox">
+ <label class="f" for="checkbox_tbox_01">Ich möchte ein Bild zu dieser Anzeige hinzufügen</label>
+ </div>
+ <div class="f">
+ <input class="f" id="checkbox_tbox_02" name="checkbox_tbox" type="checkbox">
+ <label class="f" for="checkbox_tbox_02">Ich habe die AGB für das Hochladen von Bildern gelesen und akzeptiere diese</label>
+ </div>
+ </fieldset>
+ </form>
+ <form action="#" class="testlab form" method="get">
+ <h2 class="f">Alleinstehende Checkbox</h2>
+ <div class="f checkbox">
+ <input class="f" id="checkbox_tbox_03" name="checkbox_tbox" type="checkbox">
+ <label class="f" for="checkbox_tbox_03">Ich möchte ein Bild zu dieser Anzeige hinzufügen</label>
+ </div>
+ </form>
+ <form action="#" class="testlab form" method="get">
+ <h2 class="f">Kundendaten</h2>
+ <p class="f required">
+ <strong class="r">Pflichtfelder</strong> sind mit einem
+ <strong class="r symbol">*</strong> markiert.
+ </p>
+ <div class="f text required">
+ <label class="f" for="text_tbox_01"><span class="required">* </span>Nachname</label>
+ <input class="f" id="text_tbox_01" type="text" value="Mustermann">
+ </div>
+ <div class="f text required">
+ <label class="f" for="text_tbox_02">Vorname</label>
+ <input class="f" id="text_tbox_02" type="text" value="Max">
+ </div>
+ <div class="f select required">
+ <label class="f" for="text_tbox_03"><span class="required">* </span>Ort</label>
+ <select class="f" id="text_tbox_03">
+ <option>Dortmund</option>
+ <option>Bochum</option>
+ <option>Essen</option>
+ <option>Mönchengladbach</option>
+ <option>Oberhausen</option>
+ <option>Castrop-Rauxel</option>
+ <option>Düsseldorf</option>
+ </select>
+ </div>
+ <div class="f text required">
+ <label class="f" for="text_tbox_04"><span class="required">* </span>Straße/Hausnr.</label>
+ <input class="f error" id="text_tbox_04" type="text" value="">
+ <span class="f error"><span class="e">< </span><strong class="e">Fehler:</strong> Dies ist ein Pflichtfeld!</span>
+ </div>
+ <div class="f text required">
+ <label class="f" for="text_tbox_05"><span class="required">* </span>Postleitzahl</label>
+ <input class="f" id="text_tbox_05" type="text" value="">
+ </div>
+ <div class="f text required">
+ <label class="f" for="text_tbox_06">Telefon</label>
+ <input class="f" id="text_tbox_06" type="text" value="">
+ </div>
+ <hr class="f">
+ <div class="f submit">
+ <input class="f" type="submit" value="> weiter">
+ </div>
+ </form>
+ <form action="#" class="testlab form" method="get">
+ <h2 class="f">Anzeige regionalisieren</h2>
+ <p class="f">
+ Indem Du Deine Kleinanzeige einer Stadt zuordnest, können Interessenten
+ diese online leichter finden, wenn sie nur nach Kleinanzeigen aus
+ bestimmten Städten suchen.
+ Du kannst auch keine Stadt zuordnen, dann wird die Kleinanzeige von
+ diesen Interessenten aber auch nicht gefunden.
+ </p>
+ <hr class="f">
+ <div class="f text">
+ <label class="f" for="city">Stadt</label>
+ <input class="f" id="city" type="text">
+ <p class="f info">
+ Das Feld leer lassen, wenn die Anzeige nicht regionalisiert werden soll.
+ </p>
+ </div>
+ </form>
+ <form action="#" class="testlab form" method="get">
+ <h2 class="f">Ein Passwort-Eingabe-Feld</h2>
+ <div class="f text required">
+ <label class="f" for="text_tbox_05"><span class="required">* </span>Passwort</label>
+ <input class="f" id="text_tbox_05" type="password" value="t">
+ </div>
+ </form>
+ <form action="#" class="testlab form" method="get">
+ <h2 class="f">Lade das Bild hoch</h2>
+ <p class="f info">
+ Du kannst ein Bild im JPEG- oder PNG-Format hochladen.
+ Das Bild darf nicht größer als 8 MByte sein.
+ </p>
+ <div class="f file required">
+ <label class="f" for="file_tbox_01"><span class="required">* </span>Bild</label>
+ <input class="f" id="file_tbox_01" type="file">
+ </div>
+ <hr class="f">
+ <div class="f submit">
+ <input class="f" type="submit" value="> Doch kein Bild">
+ <input class="f" type="submit" value="> Bild hochladen">
+ </div>
+ </form>
+ <div class="testlab form">
+ <h2 class="f">Antworten</h2>
+ <p class="f required">
+ <strong class="r">Pflichtfelder</strong> sind mit einem
+ <strong class="r symbol">*</strong> markiert.
+ </p>
+ <div class="f text required">
+ <label class="f" for="replyTo"><span class="required">*</span> Antwort-Adresse</label>
+ <input class="f" id="replyTo" name="replyTo" tabindex="1" type="text" value="">
+ </div>
+ <div class="f text required">
+ <label class="f" for="replyTo"><span class="required">*</span> Adresse wiederholen</label>
+ <input class="f" id="replyToRepeated" name="replyToRepeated" tabindex="2" type="text" value="">
+ </div>
+ <div class="f text required">
+ <label class="f" for="subject"><span class="required">*</span> Betreff</label>
+ <input class="f" id="subject" name="subject" tabindex="3" type="text" value="">
+ </div>
+ <div class="f textarea required">
+ <label class="f" for="text"><span class="required">*</span> Nachricht</label>
+ <textarea class="f" cols="20" id="text" name="text" rows="15" tabindex="4"></textarea>
+ </div>
+ <div class="f checkbox">
+ <input checked="checked" class="f" id="attachment1" name="attachment" tabindex="4" type="checkbox" value="true"><input name="_attachment" type="hidden" value="on">
+ <label class="f" for="attachment">Ich möchte eine Datei an die E-Mail anhängen.</label>
+ </div>
+ <div class="f checkbox">
+ <input checked="checked" class="f" id="copy1" name="copy" tabindex="5" type="checkbox" value="true"><input name="_copy" type="hidden" value="on">
+ <label class="f" for="copy">Ich möchte eine Kopie der Nachricht zugesendet bekommen.</label>
+ </div>
+ </div>
+ <div class="testlab form cf">
+ <div class="col2 left">
+ <h2 class="f">Weiter mit Anmeldung</h2>
+ <div class="f text">
+ <label class="f" for="username">Benutzername</label>
+ <input class="f" id="username" name="username" tabindex="6" type="text">
+ </div>
+ <div class="f text">
+ <label class="f" for="password">Passwort</label>
+ <input class="f" id="password" name="password" tabindex="7" type="password">
+ </div>
+ </div>
+ <div class="col2 right">
+ <h2 class="f">Weiter ohne Anmeldung</h2>
+ <!-- <a href="/kleinanzeigen/37431/lust+.html" title="Zu schwer? Hier klicken um das Bild zu wechseln!"><img src="/img/captcha.jpg" alt="Captcha" width="120" height="60" /></a> -->
+ <div class="f captcha cf">
+ <span class="f">Was steht da?</span>
+ <img alt="Captcha" class="f" height="60" src="/img/captcha.jpg" width="120">
+ </div>
+ <div class="f text">
+ <label class="f" for="captcha">Lösung</label>
+ <input class="f" id="captcha" name="captcha" tabindex="8" type="text">
+ </div>
+ </div>
+ </div>
+ </div>
--- /dev/null
+---
+title: "HTML-Experimente - Layout TINY"
+linkTitle: "Layout TINY"
+url: /potemkin/html-experimente/tiny.html
+---
+<main class="maincontent">
+ <header><h1>Layout für sehr kleine Bildschirmgrößen</h1></header>
+ <strong th:replace="/templates/layout.html :: maincontent">MAIN-CONTENT</strong>
+ </main>
+<aside class="marginalcontent" th:replace="/templates/fragments.html :: marginalcontent">
+ MARGINAL-CONTENT
+ </aside>
--- /dev/null
+---
+title: "Typography"
+url: /potemkin/typo.html
+---
+<article class="maincontent">
+ <header><h1>Typography</h1></header>
+ <p>
+ Lorem ipsum dolor <a href="#da">sit amet</a>, consectetur adipisicing elit,
+ sed do eiusmod <strong>tempor incididunt</strong> ut labore et dolore
+ magna aliqua. Ut enim ad minim veniam, quis nostrud
+ <a href="#dort">exercitation</a> ullamco laboris nisi ut aliquip
+ <em>ex ea</em> commodo consequat. Duis aute irure dolor in reprehenderit
+ in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+ <strong>Excepteur sint <em>occaecat</em> cupidatat non proident</strong>,
+ sunt in culpa qui officia deserunt mollit anim id est laborum.
+ </p>
+ <h2>Ein Link <a href="#link">im Titel</a></h2>
+ <p>Ein Link <a href="#link">im Text</a>.</p>
+ <h2>Normal / Italic / Bold / Bold+Italic</h2>
+ <ul>
+ <li>normal</li>
+ <li><em>italic</em></li>
+ <li><strong>bold</strong></li>
+ <li><strong><em>bold italic</em></strong></li>
+ </ul>
+ <p>
+ ÄäÖöÜüß@€¢
+ <strong>ÄäÖöÜüß@€¢</strong>
+ <em>ÄäÖöÜüß@€¢</em>
+ <strong><em>ÄäÖöÜüß@€¢</em></strong>
+ </p>
+ <h1>
+ AÄaäOÖoöuÜuüß@€¢
+ <strong>AÄaäOÖoöUÜuüß@€¢</strong>
+ <em>AÄaäOÖoöUÜuüß@€¢</em>
+ <strong><em>AÄaäOÖoöUÜuüß@€¢</em></strong>
+ </h1>
+ <h1>H1: Heading</h1>
+ <h2>H2: Heading</h2>
+ <h3>H3: Heading</h3>
+ <h4>H4: Heading</h4>
+ <h1>H1: Heading</h1>
+ <p>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
+ culpa qui officia deserunt mollit anim id est laborum.
+ </p>
+ <h2>H2: Heading</h2>
+ <p>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
+ culpa qui officia deserunt mollit anim id est laborum.
+ </p>
+ <h3>H3: Heading</h3>
+ <p>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
+ culpa qui officia deserunt mollit anim id est laborum.
+ </p>
+ <h4>H4: Heading</h4>
+ <p>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
+ culpa qui officia deserunt mollit anim id est laborum.
+ </p>
+ <h1>Preformatted code</h1>
+ <p>
+ <em>Juplo Branding</em> uses
+ <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html" title="Visit prettify's README">google-code-prettify</a> for automatic
+ syntax highlighting.
+ </p>
+ <pre class="prettyprint linenums"><code class="language-xml"><plugin>
+ <groupId>ro.isdc.wro4j</groupId>
+ <artifactId>wro4j-maven-plugin</artifactId>
+ <version>${wro4j.version}</version>
+ <configuration>
+ <wroManagerFactory>ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory</wroManagerFactory>
+ <cssDestinationFolder>${project.build.directory}/${project.build.finalName}/css/</cssDestinationFolder>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+</plugin>
+</code></pre>
+ </article>
--- /dev/null
+baseURL: https://example.org/
+copyright: Kai Moritz
+languageCode: en-US
+mainSections:
+ - blog
+ - projects
+ - about
+minify:
+ minifyOutput: true
+module:
+ hugoVersion:
+ extended: false
+ min: 0.152.0
+params:
+ author:
+ email: kai@juplo.de
+ name: Kai Moritz
+title: Thymeleaf-Theme for Thymeroot
+++ /dev/null
-baseURL: https://example.org/
-copyright: Kai Moritz
-languageCode: en-US
-mainSections:
- - blog
- - projects
- - about
-module:
- hugoVersion:
- extended: false
- min: 0.152.0
-params:
- author:
- email: kai@juplo.de
- name: Kai Moritz
-title: Thymeleaf-Theme for Thymeroot
--- /dev/null
+baseURL: https://example.org/
+copyright: Kai Moritz
+languageCode: en-US
+mainSections:
+ - blog
+ - projects
+ - about
+module:
+ hugoVersion:
+ extended: false
+ min: 0.152.0
+params:
+ author:
+ email: kai@juplo.de
+ name: Kai Moritz
+title: Thymeleaf-Theme for Thymeroot