{"id":5993,"date":"2012-09-18T08:38:34","date_gmt":"2012-09-18T13:38:34","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=5993"},"modified":"2012-09-18T08:38:34","modified_gmt":"2012-09-18T13:38:34","slug":"sample-maven-webapp-project","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=5993","title":{"rendered":"Sample Maven Webapp Project"},"content":{"rendered":"<span id=\"Sample_Webapp_Project\"><h2>Sample Webapp Project<\/h2><\/span>\n<span id=\"Generate_Project\"><h3>Generate Project<\/h3><\/span>\n<p>* Generate sample webapp by choosing archetype<em>174<\/em>.<br \/>\n* Note that the numbers do change day by day so I ran command <em>mvn archetype:generate > mvn_archetypes.txt<\/em> to find the exact number.<\/p>\n<pre lang=\"bash\">\r\nmvn archetype:generate\r\n\r\nChoose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 171: 174\r\nChoose org.apache.maven.archetypes:maven-archetype-webapp version:\r\n1: 1.0-alpha-1\r\n2: 1.0-alpha-2\r\n3: 1.0-alpha-3\r\n4: 1.0-alpha-4\r\n5: 1.0\r\nChoose a number: 5:\r\nDownloading: http:\/\/repo1.maven.org\/maven2\/org\/apache\/maven\/archetypes\/maven-archetype-webapp\/1.0\/maven-archetype-webapp-1.0.jar\r\n\r\nDownloading: http:\/\/repo1.maven.org\/maven2\/org\/apache\/maven\/archetypes\/maven-archetype-webapp\/1.0\/maven-archetype-webapp-1.0.pom\r\n\r\nDefine value for property 'groupId': : test.maven.one\r\nDefine value for property 'artifactId': : sample-webapp\r\nDefine value for property 'version': 1.0-SNAPSHOT:\r\nDefine value for property 'package': test.maven.one:\r\nConfirm properties configuration:\r\ngroupId: test.maven.one\r\nartifactId: sample-webapp\r\nversion: 1.0-SNAPSHOT\r\npackage: test.maven.one\r\nY:\r\n[INFO] ----------------------------------------------------------------------------\r\n[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-webapp:1.0\r\n[INFO] ----------------------------------------------------------------------------\r\n[INFO] Parameter: groupId, Value: test.maven.one\r\n[INFO] Parameter: packageName, Value: test.maven.one\r\n[INFO] Parameter: package, Value: test.maven.one\r\n[INFO] Parameter: artifactId, Value: sample-webapp\r\n[INFO] Parameter: basedir, Value: C:\\Users\\jli\r\n[INFO] Parameter: version, Value: 1.0-SNAPSHOT\r\n[INFO] project created from Old (1.x) Archetype in dir: C:\\Users\\jli\\sample-webapp\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] BUILD SUCCESSFUL\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] Total time: 5 minutes 23 seconds\r\n[INFO] Finished at: Mon Feb 20 17:04:32 EST 2012\r\n[INFO] Final Memory: 22M\/215M\r\n[INFO] ------------------------------------------------------------------------\r\n<\/pre>\n<p>* sample-webapp folder generated <\/p>\n<span id=\"\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_dir.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_dir.jpg\" alt=\"\" title=\"maven_samplewebapp_dir\" width=\"273\" height=\"125\" class=\"aligncenter size-full wp-image-4350\" \/><\/a><\/h6><\/span>\n<p>* Generated <em>pom.xml<br \/>\n<\/em><\/p>\n<pre lang=\"xml\">\r\n<project xmlns=\"http:\/\/maven.apache.org\/POM\/4.0.0\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n  xsi:schemaLocation=\"http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/maven-v4_0_0.xsd\">\r\n  <modelVersion>4.0.0<\/modelVersion>\r\n  <groupId>test.maven.one<\/groupId>\r\n  <artifactId>sample-webapp<\/artifactId>\r\n  <packaging>war<\/packaging>\r\n  <version>1.0-SNAPSHOT<\/version>\r\n  <name>sample-webapp Maven Webapp<\/name>\r\n  <url>http:\/\/maven.apache.org<\/url>\r\n  <dependencies>\r\n    <dependency>\r\n      <groupId>junit<\/groupId>\r\n      <artifactId>junit<\/artifactId>\r\n      <version>3.8.1<\/version>\r\n      <scope>test<\/scope>\r\n    <\/dependency>\r\n  <\/dependencies>\r\n  <build>\r\n    <finalName>sample-webapp<\/finalName>\r\n  <\/build>\r\n<\/project>\r\n<\/pre>\n<p>* Run <em>package<\/em>:<\/p>\n<pre lang=\"bash\">\r\ncd sample-webapp\r\nmvn package\r\n<\/pre>\n<p><em>target <\/em>folder is generated for all packaging artifacts:<\/p>\n<span id=\"_1\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_package.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_package.jpg\" alt=\"\" title=\"maven_samplewebapp_package\" width=\"341\" height=\"231\" class=\"aligncenter size-full wp-image-4353\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_package.jpg 341w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_package-300x203.jpg 300w\" sizes=\"auto, (max-width: 341px) 100vw, 341px\" \/><\/a><\/h6><\/span>\n<p>* Run <em>install<\/em>: copy war file to local repository (while <em>deploy <\/em>phase copy war file to remote repository)<\/p>\n<pre lang=\"bash\">\r\n[INFO] [install:install {execution: default-install}]\r\n[INFO] Installing C:\\jml\\demo\\sample-webapp\\target\\sample-webapp.war to C:\\Users\\jli\\.m2\\repository\\test\\maven\\one\\sample-webapp\\1.0-SNAPSHOT\\sample-webapp-1.0-SNAPSHOT.war\r\n<\/pre>\n<span id=\"Add_a_Java_Source_File\"><h3>Add a Java Source File<\/h3><\/span>\n<p>* Create package directories: <strong>test\/maven\/one<\/strong><br \/>\n* Create a Java source file named <strong>HelloWorld.java<\/strong>:<\/p>\n<pre lang=\"java\">\r\npackage test.maven.one;\r\n\r\nimport org.apache.log4j.*;\r\n\r\npublic class HelloWorld {\r\n  Logger log = LogManager.getLogger(HelloWorld.class);\r\n\r\n  public String sayHello() {\r\n    String hello = \"Hello world!\";\r\n\t  log.info(hello);\r\n    return hello;\r\n  }\r\n}\r\n<\/pre>\n<p>* Create <strong>log4j.properties<\/strong> file in <em>src\\main\\resources<\/em> directory:<\/p>\n<pre lang=\"bash\">\r\nlog4j.rootLogger=debug, stdout\r\n \r\nlog4j.appender.stdout=org.apache.log4j.ConsoleAppender\r\nlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout\r\n \r\n# Pattern to output the caller's file name and line number.\r\nlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n\r\n<\/pre>\n<p>* Add log4j dependency to <em>pom.xml<\/em> file:<\/p>\n<pre lang=\"xml\">\r\n   ...\r\n   <dependency>\r\n     <groupId>log4j<\/groupId>\r\n     <artifactId>log4j<\/artifactId>\r\n     <version>1.2.14<\/version>\r\n   <\/dependency>\r\n\r\n  <\/dependencies>\r\n<\/pre>\n<p>* Do <em>build<\/em>. Note that<br \/>\n&#8211; Log4j dependency is automatically resolved<br \/>\n&#8211; <em>log4j-1.2.14.jar<\/em> is automatically downloaded and included in <em>WEB-INF\/lib<\/em> directory<br \/>\n&#8211; Java class is compiled<\/p>\n<pre lang=\"bash\">\r\nC:\\jml\\demo\\sample-webapp>mvn compile\r\n[INFO] Scanning for projects...\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] Building sample-webapp Maven Webapp\r\n[INFO]    task-segment: [compile]\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] [resources:resources {execution: default-resources}]\r\n[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!\r\n[INFO] Copying 0 resource\r\nDownloading: http:\/\/repo1.maven.org\/maven2\/log4j\/log4j\/1.2.14\/log4j-1.2.14.pom\r\n\r\nDownloading: http:\/\/repo1.maven.org\/maven2\/log4j\/log4j\/1.2.14\/log4j-1.2.14.jar\r\n\r\n[INFO] [compiler:compile {execution: default-compile}]\r\n[INFO] Compiling 1 source file to C:\\jml\\demo\\sample-webapp\\target\\classes\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] BUILD SUCCESSFUL\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] Total time: 2 seconds\r\n[INFO] Finished at: Mon Feb 20 17:51:20 EST 2012\r\n[INFO] Final Memory: 9M\/152M\r\n[INFO] ------------------------------------------------------------------------\r\n<\/pre>\n<p>* Do <em>package<\/em>:<\/p>\n<pre lang=\"bash\">\r\nmvn package\r\n<\/pre>\n<span id=\"Specify_JDK_1.5_Dependency\"><h3>Specify JDK 1.5 Dependency<\/h3><\/span>\n<p>* In pom.xml, use build plugin to specify using jdk1.5 for compiling:<\/p>\n<pre lang=\"xml\">\r\n  <build>\r\n    <finalName>sample-webapp<\/finalName>\r\n    <plugins>\r\n        <plugin>\r\n            <groupId>org.apache.maven.plugins<\/groupId> \r\n            <artifactId>maven-compiler-plugin<\/artifactId>\r\n            <version>2.0.2<\/version>\r\n            <configuration>\r\n                <source>1.5<\/source>\r\n                <target>1.5<\/target>\r\n            <\/configuration>\r\n        <\/plugin>\r\n    <\/plugins>\r\n  <\/build>\r\n<\/pre>\n<span id=\"Enforce_Dependencies\"><h3>Enforce Dependencies<\/h3><\/span>\n<p>* Enforce that commons-logging <strong>not <\/strong>to be used.<\/p>\n<pre lang=\"xml\">\r\n    <plugin> \r\n        <groupId>org.apache.maven.plugins<\/groupId>\r\n        <artifactId>maven-enforcer-plugin<\/artifactId>\r\n        <version>1.0-beta-1<\/version>\r\n        <executions> \r\n            <execution>\r\n                <id>enforce-dependencies<\/id>\r\n                <goals> \r\n                    <goal>enforce<\/goal> \r\n                <\/goals>\r\n                <configuration>\r\n                    <rules>\r\n                        <bannedDependencies>\r\n                            <excludes>\r\n                                <exclude>commons-logging:commons-logging<\/exclude>\r\n                            <\/excludes>\r\n                        <\/bannedDependencies>\r\n                    <\/rules> \r\n                <\/configuration>\r\n            <\/execution> \r\n        <\/executions>\r\n    <\/plugin>\r\n<\/plugins>\r\n<\/build>\r\n<\/pre>\n<p>* You will see in the output message when you do <strong>mvn compile<\/strong><\/p>\n<pre lang=\"text\">\r\n[INFO] [enforcer:enforce {execution: enforce-dependencies}]\r\n<\/pre>\n<span id=\"Enable_Unit_Testing\"><h3>Enable Unit Testing<\/h3><\/span>\n<p>* Add a test library dependency for <em>TestNG<\/em><\/p>\n<pre lang=\"xml\">\r\n    <dependency> \r\n        <groupId>org.testng<\/groupId>\r\n        <artifactId>testng<\/artifactId>\r\n        <version>5.8<\/version>\r\n        <classifier>jdk15<\/classifier>\r\n        <scope>test<\/scope>\r\n    <\/dependency>\r\n<\/pre>\n<p>* Add a test Java class file named <strong>HelloWorldTest  <\/strong>to test <em>HelloWorld<\/em> in <em>src\/main\/test\/java<\/em> directory:<\/p>\n<pre lang=\"java\">\r\npackage test.maven.one;\r\n\r\nimport org.apache.log4j.*;\r\nimport org.testng.annotations.*;\r\n\r\npublic class HelloWorldTest {\r\n\r\n  Logger log = LogManager.getLogger(HelloWorldTest.class);\r\n  private HelloWorld hw = new HelloWorld();\r\n\r\n  @Test\r\n  public void testSayHello() {\r\n    log.info(\"testSayHello...\");\r\n\r\n    assert \"Hello world!\".equals(hw.sayHello());\r\n  }\r\n\r\n}\r\n<\/pre>\n<p>* Run <strong>mvn test<\/strong><\/p>\n<pre lang=\"text\">\r\n-------------------------------------------------------\r\n T E S T S\r\n-------------------------------------------------------\r\nRunning TestSuite\r\n INFO [main] (HelloWorldTest.java:13) - testSayHello...\r\n INFO [main] (HelloWorld.java:12) - Hello world!\r\nTests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.36 sec\r\n\r\nResults :\r\n\r\nTests run: 1, Failures: 0, Errors: 0, Skipped: 0\r\n\r\n[INFO] -----------------------------------------------------------------\r\n[INFO] BUILD SUCCESSFUL\r\n[INFO] -----------------------------------------------------------------\r\n[INFO] Total time: 1 second\r\n[INFO] Finished at: Wed Feb 22 09:24:44 EST 2012\r\n[INFO] Final Memory: 14M\/215M\r\n[INFO] -----------------------------------------------------------------\r\n<\/pre>\n<p>* Report also generated in surefire-reports directory:<\/p>\n<span id=\"_2\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_testclass_report.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_testclass_report.jpg\" alt=\"\" title=\"maven_samplewebapp_testclass_report\" width=\"346\" height=\"250\" class=\"aligncenter size-full wp-image-4356\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_testclass_report.jpg 346w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_testclass_report-300x216.jpg 300w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/a><\/h6><\/span>\n<span id=\"Test_Webapp_with_Jetty_Servlet_Container\"><h3>Test Webapp with Jetty Servlet Container<\/h3><\/span>\n<p>* Add Jetty plugin to pom.xml<\/p>\n<pre lang=\"xml\">\r\n  <plugin>\r\n    <groupId>org.mortbay.jetty<\/groupId>\r\n    <artifactId>maven-jetty-plugin<\/artifactId>\r\n    <version>6.1.10<\/version>\r\n    <configuration>\r\n      <stopPort>9966<\/stopPort>\r\n      <stopKey>foo<\/stopKey>\r\n    <\/configuration>\r\n  <\/plugin>\r\n    <\/plugins>\r\n<\/build>\r\n<\/pre>\n<p>* Run Jetty with <strong>mvn jetty:run<\/strong><\/p>\n<pre lang=\"text\">\r\n[INFO] [jetty:run {execution: default-cli}]\r\n[INFO] Configuring Jetty for project: sample-webapp Maven Webapp\r\n[INFO] Webapp source directory = C:\\jml\\demo\\sample-webapp\\src\\main\\webapp\r\n[INFO] web.xml file = C:\\jml\\demo\\sample-webapp\\src\\main\\webapp\\WEB-INF\\web.xml\r\n[INFO] Classes = C:\\jml\\demo\\sample-webapp\\target\\classes\r\n2012-02-21 13:43:04.667::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog\r\n[INFO] Context path = \/sample-webapp\r\n[INFO] Tmp directory =  determined at runtime\r\n[INFO] Web defaults = org\/mortbay\/jetty\/webapp\/webdefault.xml\r\n[INFO] Web overrides =  none\r\n[INFO] Webapp directory = C:\\jml\\demo\\sample-webapp\\src\\main\\webapp\r\n[INFO] Starting jetty 6.1.10 ...\r\n2012-02-21 13:43:05.029::INFO:  jetty-6.1.10\r\n2012-02-21 13:43:05.398::INFO:  No Transaction manager found - if your webapp re\r\nquires one, please configure one.\r\n2012-02-21 13:43:06.115::INFO:  Started SelectChannelConnector@0.0.0.0:8080\r\n[INFO] Started Jetty Server\r\n<\/pre>\n<p>* View page from web browser:<\/p>\n<span id=\"_3\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_jettyrun.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_jettyrun.jpg\" alt=\"\" title=\"maven_samplewebapp_jettyrun\" width=\"246\" height=\"83\" class=\"aligncenter size-full wp-image-4357\" \/><\/a><\/h6><\/span>\n<p>* Stop Jetty with: <strong>mvn jetty:stop<\/strong> (or ctr-C)<\/p>\n<pre lang=\"text\">\r\nC:\\jml\\demo\\sample-webapp>mvn jetty:stop\r\n[INFO] Scanning for projects...\r\n[INFO] -----------------------------------------------------\r\n[INFO] Building sample-webapp Maven Webapp\r\n[INFO]    task-segment: [jetty:stop]\r\n[INFO] -----------------------------------------------------\r\n[INFO] Preparing jetty:stop\r\n[INFO] [enforcer:enforce {execution: enforce-dependencies}]\r\n[INFO] [jetty:stop {execution: default-cli}]\r\n[INFO] -----------------------------------------------------\r\n[INFO] BUILD SUCCESSFUL\r\n[INFO] -----------------------------------------------------\r\n[INFO] Total time: 4 seconds\r\n[INFO] Finished at: Tue Feb 21 14:00:43 EST 2012\r\n[INFO] Final Memory: 12M\/218M\r\n[INFO] -----------------------------------------------------\r\n<\/pre>\n<span id=\"Generate_Site_Report\"><h3>Generate Site Report<\/h3><\/span>\n<p>* Run <strong>mvn site<\/strong><br \/>\n* Site report generated in <em>target\/site<\/em> directory<br \/>\n* Double click index.html to view site:<\/p>\n<span id=\"_4\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_site.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_site-300x138.jpg\" alt=\"\" title=\"maven_samplewebapp_site\" width=\"300\" height=\"138\" class=\"aligncenter size-medium wp-image-4367\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_site-300x138.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/02\/maven_samplewebapp_site.jpg 733w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"References\"><h2>References<\/h2><\/span>\n<p>* Apache Maven 2 Effective Implementation By: Brett Porter; Maria Odea Ching<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sample Webapp Project Generate Project * Generate sample webapp by choosing archetype174. * Note that the numbers do change day by day so I ran command mvn archetype:generate > mvn_archetypes.txt to find the exact number. mvn archetype:generate Choose a number &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=5993\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[128],"tags":[605,249,250],"class_list":["post-5993","post","type-post","status-publish","format-standard","hentry","category-maven","tag-maven","tag-sample","tag-webapp"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-1yF","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/5993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5993"}],"version-history":[{"count":2,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/5993\/revisions"}],"predecessor-version":[{"id":5995,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/5993\/revisions\/5995"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}