61.Linux2014. 1. 13. 17:11
반응형

CentOS에서 GNOME 설치

1. yum -y groupinstall "X Window System" "GNOME Desktop Environment"

2. startx

------------------------------
X Window 부팅설정

vim /etc/inittab

id:3:initdefault:  3 -> 5 변경

 

Posted by 1010
반응형

Example: Standard jQuery drag-and-drop

 

출처 : http://wwwendt.de/tech/dynatree/doc/samples.html

 

jquery_dynatree-1_2_5-all.zip

 

This sample uses the standard jQuery draggable and droppable.

Skin:

This tree allows dragging.

This tree allows dropping.

Active node: -
Active node: Sub-item 2.1.1(_4)

Drag me around

Drop something here


Dynatree DEVELOPMENT, jQuery UI 1.8.24, jQuery 1.8.2

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
 
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
 
<title>Dynatree - Example</title>
<!--
  <script src="../jquery/jquery.cookie.js" type="text/javascript"></script>
  <script src="../jquery/jquery.js" type="text/javascript"></script>
  <script src="../jquery/jquery-ui.custom.js" type="text/javascript"></script>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js" type="text/javascript"></script>
-->

 
<script src="../jquery/jquery.cookie.js" type="text/javascript"></script>
 
<script src="../jquery/jquery.js" type="text/javascript"></script>
 
<script src="../jquery/jquery-ui.custom.js" type="text/javascript"></script>

 
<link href="../src/skin/ui.dynatree.css" rel="stylesheet" type="text/css" id="skinSheet">
 
<script src="../src/jquery.dynatree.js" type="text/javascript"></script>

 
<style type="text/css">
   
#draggableSample, #droppableSample {
      height
:100px;
      padding
:0.5em;
      width
:150px;
      border
:1px solid #AAAAAA;
   
}
   
#draggableSample {
      background
-color: silver;
      color
:#222222;
   
}
   
#droppableSample {
      background
-color: maroon;
      color
: white;
   
}
   
#droppableSample.drophover {
      border
: 1px solid green;
   
}
 
</style>

 
<!-- (Irrelevant source removed.) -->

<script type="text/javascript"><!--
$
(function(){
 
// --- Initialize first Dynatree -------------------------------------------
  $
("#tree").dynatree({
    initAjax
: {
      url
: "sample-data3.json"
   
},
    onLazyRead
: function(node){
     
// Mockup a slow reqeuest ...
      node
.appendAjax({
        url
: "sample-data2.json",
        debugLazyDelay
: 750 // don't do thi in production code
     
});
   
},
    onActivate
: function(node) {
      $
("#echoActive").text(node.data.title + "(" + node.data.key + ")");
   
},
    onDeactivate
: function(node) {
      $
("#echoActive").text("-");
   
},
    dnd
: {
      revert
: false, // true: slide helper back to source if drop is rejected
      onDragStart
: function(node) {
       
/** This function MUST be defined to enable dragging for the tree.
         *  Return false to cancel dragging of node.
         */

        logMsg
("tree.onDragStart(%o)", node);
       
if(node.data.isFolder){
         
return false;
       
}
       
return true;
     
},
      onDragStop
: function(node) {
        logMsg
("tree.onDragStop(%o)", node);
     
}
   
}
 
});
 
// --- Initialize second Dynatree ------------------------------------------
  $
("#tree2").dynatree({
    initAjax
: {
      url
: "sample-data3.json"
   
},
    onLazyRead
: function(node){
     
// Mockup a slow reqeuest ...
      node
.appendAjax({
        url
: "sample-data2.json",
        debugLazyDelay
: 750 // don't do thi in production code
     
});
   
},
    onActivate
: function(node) {
      $
("#echoActive2").text(node.data.title + "(" + node.data.key + ")");
   
},
    onDeactivate
: function(node) {
      $
("#echoActive2").text("-");
   
},
    onLazyRead
: function(node){
      node
.appendAjax({
        url
: "sample-data2.json"
     
});
   
},
    dnd
: {
      autoExpandMS
: 1000,
      preventVoidMoves
: true, // Prevent dropping nodes 'before self', etc.
      onDragEnter
: function(node, sourceNode) {
       
/* sourceNode may be null for non-dynatree droppables.
         * Return false to disallow dropping on node. In this case
         * onDragOver and onDragLeave are not called.
         * Return 'over', 'before, or 'after' to force a hitMode.
         * Any other return value will calc the hitMode from the cursor position.
         */

        logMsg
("tree.onDragEnter(%o, %o)", node, sourceNode);
       
// For the sake of this example deny dropping over folders
       
if(node.data.isFolder){
         
return false;
       
}
       
return true;
//                return "over";
     
},
      onDragOver
: function(node, sourceNode, hitMode) {
       
/* Return false to disallow dropping this node.*/
//         if(node.data.isFolder){
//           var dd = $.ui.ddmanager.current;
//           dd.cancel();
//           alert("folder");
//         }
        logMsg
("tree.onDragOver(%o, %o, %o)", node, sourceNode, hitMode);
     
},
      onDrop
: function(node, sourceNode, hitMode, ui, draggable) {
       
/* This function MUST be defined to enable dropping of items on the tree.
         * sourceNode may be null, if it is a non-Dynatree droppable.
         */

        logMsg
("tree.onDrop(%o, %o)", node, sourceNode);
       
var copynode;
       
if(sourceNode) {
          copynode
= sourceNode.toDict(true, function(dict){
            dict
.title = "Copy of " + dict.title;
           
delete dict.key; // Remove key, so a new one will be created
         
});
       
}else{
          copynode
= {title: "This node was dropped here (" + ui.helper + ")."};
       
}
       
if(hitMode == "over"){
         
// Append as child node
          node
.addChild(copynode);
         
// expand the drop target
          node
.expand(true);
       
}else if(hitMode == "before"){
         
// Add before this, i.e. as child of current parent
          node
.parent.addChild(copynode, node);
       
}else if(hitMode == "after"){
         
// Add after this, i.e. as child of current parent
          node
.parent.addChild(copynode, node.getNextSibling());
       
}
     
},
      onDragLeave
: function(node, sourceNode) {
       
/** Always called if onDragEnter was called.
         */

        logMsg
("tree.onDragLeave(%o, %o)", node, sourceNode);
     
}
   
}
 
});
 
// --- Initialize simple draggable sample ----------------------------------
  $
("#draggableSample").draggable({
//      revert: "invalid", // slide back, when dropping over non-target
    revert
: function(dropped){
     
// Return `true` to let the helper slide back.
     
if(typeof dropped === "boolean"){
       
// dropped == true, when dropped over a simple, valid droppable target.
       
// false, when dropped outside a drop target.
       
return !dropped;
     
}
     
// Drop comes from another tree. Default behavior is to assume
     
// a valid drop, since we are over a drop-target.
     
// Therefore we have to make an extra check, if the target node
     
// was rejected by a Dynatree callback.
     
var helper = $.ui.ddmanager && $.ui.ddmanager.current && $.ui.ddmanager.current.helper;
     
var isRejected = helper && helper.hasClass("dynatree-drop-reject");
     
return isRejected;
     
},
    connectToDynatree
: true,
    cursorAt
: { top: -5, left:-5 },
    helper
: "clone"
 
});
 
// --- Initialize simple droppable sample ----------------------------------
  $
("#droppableSample").droppable({
    hoverClass
: "drophover",
    addClasses
: true,
//    tolerance: "pointer",
    over
: function(event, ui) {
      logMsg
("droppable.over, %o, %o", event, ui);
   
},
    drop
: function(event, ui) {
     
var source = ui.helper.data("dtSourceNode") || ui.draggable;
      $
(this).addClass("ui-state-highlight").find("p").html("Dropped " + source);
//      alert("dropped");
   
}
 
});
 
<!-- (Irrelevant source removed.) -->
});
--></script>
</head>

<body class="example">
 
<h1>Example: Standard jQuery drag-and-drop</h1>
 
<p class="description">
    This sample uses the standard jQuery draggable and droppable.
 
</p>
 
<div>
    Skin:
   
<select id="skinCombo" size="1">
     
<option value="skin">Standard ('/skin/')</option>
     
<option value="skin-vista">Vista ('/skin-vista/')</option>
   
</select>
 
</div>

 
<table>
 
<thead>
 
<tr>
   
<th>
   
<p>This tree allows dragging.</p>
   
</th>
   
<th>
   
<p>This tree allows dropping.</p>
   
</th>
 
</tr>
 
</thead>
 
<tbody>
 
<tr valign="top">
   
<td>
     
<div id="tree"> </div>
   
</td>
   
<td>
     
<div id="tree2"></div>
   
</td>
 
</tr>
 
<tr>
   
<td>
     
<div>Active node: <span id="echoActive">-</span></div>
   
</td>
   
<td>
     
<div>Active node: <span id="echoActive2">-</span></div>
   
</td>
 
</tr>
 
<tr>
   
<td>
     
<div id="draggableSample" class="ui-widget-content">
       
<p>Drag me around</p>
     
</div>
   
</td>
   
<td>
     
<div id="droppableSample" class="ui-widget-content">
       
<p>Drop something here</p>
     
</div>
   
</td>
 
</tr>
 
</tbody>
 
</table>

 
<!-- (Irrelevant source removed.) -->
</body>
</html>
Posted by 1010
반응형


 menuCd

 highMenuCd

 menuNm

 orderNo

 

 1001

 0

 고객

 1

 1002

 1001

 고객리스트

 2
 1003  1002  대기리스트  3
 1004  0  게시판  4
 1005  1004  자유게시판  5
 1006  1004  유머게시판  6

 


위와 같은 형식의 데이터를 DB에서 뽑아 냈을때 오른쪽과 같이 화면에 표현하고 싶었다.


우선 Tree는 jQuery기반의 드래그앤랍이 기능이 되는 "jquery.dynatree.js" 를 선택했다.


이제 위 2차원 배열형태의 데이터를 dynatree가 요구하는 데이터형태로 변환을 해야 한다.

요구하는 데이터형태는 트리형식으로 아래와 같은 스타일로 만들어주면 된다.


[

{"isFolder":"true","title":"고객","children":[

{"isFolder":"true","title":"고객리스트" }

...

    ]

....

]


위와 같은 형태로 만들려고 삽질 좀 하다가 javascript 기반으로 잘 만들어져있는 소스를 구글링을통해 발견하여 그것을 java기반으로 수정 하였습니다.

(http://programmingsummaries.tistory.com/250)


package com.ezwel.welfare.core.util;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
/**
 * JSON관련 가공에 필요한 함수들
 * @auther ddakker 2013. 12. 12.
 */
public class JsonUtil {
    private static final Log log = LogFactory.getLog(JsonUtil.class);
    /**
     * 2차원 배열의 부모/자식 관계의 데이터를 트리형식으로 재나열 한다.
     * @param list          2차원 배열
     * @param rootId        최상위 id
     * @param idKey         유니크한 키(id가 될 필드명)
     * @param pIdKey        부모키(pId가 될 필드명)
     * @param titleKey      메뉴명이 표시될 필드명
     * @return
     * @auther ddakker 2013. 12. 12.
     */
    public static List<Map<String, Object>> convertorTreeMap(final List<Map<String, Object>> list, String rootId, final String idKey, final String pIdKey, final String titleKey){
        return convertorTreeMap(list, rootId, idKey, pIdKey, titleKey, null);
    }
    /**
     * 2차원 배열의 부모/자식 관계의 데이터를 트리형식으로 재나열 한다.
     * @param list          2차원 배열
     * @param rootId        최상위 id
     * @param idKey         유니크한 키(id가 될 필드명)
     * @param pIdKey        부모키(pId가 될 필드명)
     * @param titleKey      메뉴명이 표시될 필드명
     * @param orderKey      정렬이 필요한경우 정령 필드명
     * @return
     * @auther ddakker 2013. 12. 12.
     */
    public static List<Map<String, Object>> convertorTreeMap(List inList, String rootId, final String idKey, final String pIdKey, final String titleKey, final String orderKey){
        List<Map<String, Object>> treeList = new ArrayList<Map<String,Object>>();   // 최종 트리
         
        if( inList == null || inList.size() == 0 throw new RuntimeException("List<Map> 데이터가 없습니다.");
        if( inList.get(0) == null )                 throw new RuntimeException("Map 데이터가 없습니다.");
         
        final List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); // 원본데이터(Bean일경우 Map으로 변환)
        Iterator iter;
        for( iter=inList.iterator(); iter.hasNext(); ) {
            try{
                Object obj = iter.next();
                if( obj instanceof Map ) {
                    list.add((Map<String, Object>) obj);
                }else{
                    list.add((Map<String, Object>) BeanUtils.describe(obj));
                }
            }catch (Exception e) {
                throw new RuntimeException("Collection -> List<Map> 으로 변환 중 실패: " + e);
            }
        }
         
         
        int listLength = list.size();
        int loopLength = 0;
        final int[] treeLength = new int[] { 0 };
         
        while ( treeLength[0] != listLength && listLength != loopLength++ ) {
            for ( int i=0; i<list.size(); i++ ) {
                Map<String, Object> item = list.get(i);
                if ( rootId.equals((String)item.get(pIdKey)) ) {
                    Map<String, Object> view = new HashMap<String, Object>(item);
                    view.put("title", item.get(titleKey));
                    view.put("children", new ArrayList<Map<String,Object>>());
                     
                    treeList.add(view);
                    list.remove(i);
                     
                    treeLength[0]++;
                     
                     
                    if( orderKey != null ){
                        Collections.sort(treeList, new Comparator<Map<String, Object>>(){
                            public int compare(Map<String, Object> arg0, Map<String, Object> arg1) {
                                // TODO Auto-generated method stub
                                return ((String)arg0.get(orderKey)).compareTo((String)arg1.get(orderKey));
                            }
                        });
                    }
                    view.put("isFolder", "true");
                     
                    break;
                }else{
                    new InnerClass(){
                        public void getParentNode(List<Map<String, Object>> children, Map<String, Object> item ) {
                            for ( int i=0; i<children.size(); i++ ) {
                                Map<String, Object> child = children.get(i);
                                if ( child.get(idKey).equals(item.get(pIdKey)) ) {
                                    Map<String, Object> view = new HashMap<String, Object>(item);
                                    view.put("title", item.get(titleKey));
                                    view.put("children", new ArrayList<Map<String,Object>>());
                                    ((List<Map<String,Object>>) child.get("children")).add(view);
                                     
                                    treeLength[0]++;
                                     
                                    list.remove(list.indexOf(item));
                                    view.put("isFolder", "true");
                                     
                                    if( orderKey != null ){
                                        Collections.sort(((List<Map<String,Object>>) child.get("children")), new Comparator<Map<String, Object>>(){
                                            public int compare(Map<String, Object> arg0, Map<String, Object> arg1) {
                                                // TODO Auto-generated method stub
                                                return ((String)arg0.get(orderKey)).compareTo((String)arg1.get(orderKey));
                                            }
                                        });
                                    }
                                    break;
                                }else{
                                    if( ((List<Map<String,Object>>) child.get("children")).size() > 0 ){
                                        getParentNode((List<Map<String,Object>>) child.get("children"), item);
                                    }
                                }
                            }
                        }
                    }.getParentNode(treeList, item);
                }
            }
        }
        return treeList;
    }
     
    public interface InnerClass {
        public void getParentNode(List<Map<String, Object>> list, Map<String, Object> item );
    }
     
}

출처 : http://ddakker.tistory.com/296

Posted by 1010
반응형

spring 3.2 No setter found for property 'cronExpression' in class


Quartz Scheduler 2.x 적용 중 다음과 같은 오류 발생


spring 3.2 No setter found for property 'cronExpression' in class


해결


spring reference에 나와있는 CronTriggerBean 대신 CronTriggerFactoryBean class를 사용함


1
2
3
4
5
<bean class="org.springframework.scheduling.quartz.CronTriggerBean" id="cronTrigger">
<property ref="exampleJob" name="jobDetail">
<!-- run every morning at 6 AM -->
<property name="cronExpression" value="0 0 6 * * ?">
</property></property></bean>


대신에 아래와 같이 CronTriggerFactoryBean을 사용함.


1
2
3
4
5
<bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean" id="cronTrigger">
<property ref="exampleJob" name="jobDetail">
<!-- run every morning at 6 AM -->
<property name="cronExpression" value="0 0 6 * * ?">
</property></property></bean>


참고


If You are using Spring 3.x & Quartz 2.1.x…

Then do only two changes IN YOUR configuration file 1st : for Simple Trigger

Use class=”org.springframework.scheduling.quartz.SimpleTriggerFactoryBean”> instead of class=”org.springframework.scheduling.quartz.SimpleTriggerBean”>

2nd : for Cron Trigger useclass=”org.springframework.scheduling.quartz.CronTriggerFactoryBean” instead ofclass=”org.springframework.scheduling.quartz.CronTriggerBean”


Spring 3 + Quartz 2 error

 

출처 :http://shuiky.tistory.com/728

Posted by 1010
56. Eclipse Etc.../Eclipse2014. 1. 10. 12:44
반응형

Eclipse에서 javadoc 생성을 하려는데
아래와 같은 에러가 났습니다.

javadoc unmappable character for encoding MS949


코드의 주석에 한글(UTF-8로 인코딩된)을 써서 그런 것 같아 구글링 해봤더니 역시나 그 문제 였네요.

해결 방법은 아래 창이 나타났을 때
VM options

-encoding UTF-8


을 적어주면 해결 됩니다.
그러면 한글이 포함된 JavaDoc을 생성할 수 있습니다.

 


출처 : http://kkoseul.tistory.com/154

 

Posted by 1010
98..Etc/jQuery2014. 1. 9. 17:54
반응형

http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html


Example: Standard jQuery drag-and-drop

This sample uses the standard jQuery draggable and droppable.

Skin: 

This tree allows dragging.

This tree allows dropping.

Active node: -Active node: -

Drag me around

Drop something here


Dynatree DEVELOPMENT, jQuery UI 1.8.24, jQuery 1.8.2

Dynatree documentation

This document describes dynatree version: $Version:$.
Document revision: $Revision:$.
A current version may be found at the project site http://wwwendt.de/tech/dynatree/index.html.

Dynatree is a dynamic JavaScript tree view control with support for checkboxes, drag'n'drop, and lazy loading.

Main features:

  • Open source (MIT and GPL License)
  • Optimized for large dynamic trees (DOM elements are only created when really needed).
  • Programmable through a rich object oriented interface.
  • Support for lazy loading and Ajax.
  • Checkboxes and hierarchical selection.
  • Supports drag and drop.
  • Support for persistence.
  • Keyboard aware.
  • Initializes from HTML code, JSON, or JavaScript objects.
  • Implemented as a jQuery plugin.
    (Note: this doesn't mean that you have to use jQuery for your whole site.)

Dynatree runs best, when the HTML document is rendered in a strict mode like
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Avoid the quirks mode.

1 Download

You can download the current dynatree package at http://code.google.com/p/dynatree/downloads. It contains everything needed including the source, some documentation and examples.
jQuery is already included, but you can check the jQuery site for the latest versions of jquery.js and ui.core.js.

2 Examples

This documentation contains script examples and links.
See also the Example Browser for some more advanced live demos.

Using the [View source code] link in the Example Browser is probably the best way to learn about Dynatree.

3 Quick start

Let's start with a simple example:

Try this example...
<html>
<head>
   
<!-- Include the required JavaScript libraries: -->
   
<script src='jquery/jquery.js' type="text/javascript"></script>
   
<script src='jquery/jquery-ui.custom.js' type="text/javascript"></script>
   
<script src='jquery/jquery.cookie.js' type="text/javascript"></script>

   
<link rel='stylesheet' type='text/css' href='skin/ui.dynatree.css'>
   
<script src='jquery.dynatree.js' type="text/javascript"></script>

   
<!-- Add code to initialize the tree when the document is loaded: -->
   
<script type="text/javascript">
    $
(function(){
       
// Attach the dynatree widget to an existing <div id="tree"> element
       
// and pass the tree options as an argument to the dynatree() function:
        $
("#tree").dynatree({
            onActivate
: function(node) {
               
// A DynaTreeNode object is passed to the activation handler
               
// Note: we also get this event, if persistence is on, and the page is reloaded.
                alert
("You activated " + node.data.title);
           
},
            persist
: true,
            children
: [ // Pass an array of nodes.
               
{title: "Item 1"},
               
{title: "Folder 2", isFolder: true,
                    children
: [
                       
{title: "Sub-item 2.1"},
                       
{title: "Sub-item 2.2"}
                   
]
               
},
               
{title: "Item 3"}
           
]
       
});
   
});
   
</script>
</head>
<body>
   
<!-- Add a <div> element where the tree should appear: -->
   
<div id="tree"> </div>
</body>
</html>

As an alternative, it is possible to leave away the children option and add a <ul> inside the <div id="tree"> tag instead.
See Initializing the tree structure from a <ul> element for an example.

I am going into more details in the following sections.

4 Initializing the tree

Dynatree is based on and made for jQuery. If you are not familiar with this, you might also want to check the jQuery documentation.

The tree is initialized in the onload event of the html document. In jQuery this is usually done by passing a function to $(..) :

<head>
   
<script type="text/javascript">
        $
(function(){
           
[…]
       
});
   
</script>
</head>

The dynatree widget is then attached to an empty <div > element with a given ID of 'tree'. This id can have any value, it only has to match the jQuery selector, in our case '#tree'.
Options are passed to the dynatree() function as a dictionary in curly braces:

            $("#tree").dynatree({
               
[…]
           
});

4.1 Tree options

Tree options are passed as plain JavaScript objects in curly braces, e.g.
{ … }.

The following script shows the available options.
All options have a reasonable default, so we may only have to pass the onActivate handler.

$("#tree").dynatree({
    title
: "Dynatree", // Tree's name (only used for debug outpu)
    minExpandLevel
: 1, // 1: root node is not collapsible
    imagePath
: null, // Path to a folder containing icons. Defaults to 'skin/' subdirectory.
    children
: null, // Init tree structure from this object array.
    initId
: null, // Init tree structure from a <ul> element with this ID.
    initAjax
: null, // Ajax options used to initialize the tree strucuture.
    autoFocus
: true, // Set focus to first child, when expanding or lazy-loading.
    keyboard
: true, // Support keyboard navigation.
    persist
: false, // Persist expand-status to a cookie
    autoCollapse
: false, // Automatically collapse all siblings, when a node is expanded.
    clickFolderMode
: 3, // 1:activate, 2:expand, 3:activate and expand
    activeVisible
: true, // Make sure, active nodes are visible (expanded).
    checkbox
: false, // Show checkboxes.
    selectMode
: 2, // 1:single, 2:multi, 3:multi-hier
    fx
: null, // Animations, e.g. null or { height: "toggle", duration: 200 }
    noLink
: false, // Use <span> instead of <a> tags for all nodes
   
// Low level event handlers: onEvent(dtnode, event): return false, to stop default processing
    onClick
: null, // null: generate focus, expand, activate, select events.
    onDblClick
: null, // (No default actions.)
    onKeydown
: null, // null: generate keyboard navigation (focus, expand, activate).
    onKeypress
: null, // (No default actions.)
    onFocus
: null, // null: set focus to node.
    onBlur
: null, // null: remove focus from node.

   
// Pre-event handlers onQueryEvent(flag, dtnode): return false, to stop processing
    onQueryActivate
: null, // Callback(flag, dtnode) before a node is (de)activated.
    onQuerySelect
: null, // Callback(flag, dtnode) before a node is (de)selected.
    onQueryExpand
: null, // Callback(flag, dtnode) before a node is expanded/collpsed.

   
// High level event handlers
    onPostInit
: null, // Callback(isReloading, isError) when tree was (re)loaded.
    onActivate
: null, // Callback(dtnode) when a node is activated.
    onDeactivate
: null, // Callback(dtnode) when a node is deactivated.
    onSelect
: null, // Callback(flag, dtnode) when a node is (de)selected.
    onExpand
: null, // Callback(flag, dtnode) when a node is expanded/collapsed.
    onLazyRead
: null, // Callback(dtnode) when a lazy node is expanded for the first time.
    onCustomRender
: null, // Callback(dtnode) before a node is rendered. Return a HTML string to override.
    onCreate
: null, // Callback(dtnode, nodeSpan) after a node was rendered for the first time.
    onRender
: null, // Callback(dtnode, nodeSpan) after a node was rendered.
    postProcess
: null, // Callback(data, dataType) before an Ajax result is passed to dynatree.

   
// Drag'n'drop support
    dnd
: {
       
// Make tree nodes draggable:
        onDragStart
: null, // Callback(sourceNode), return true, to enable dnd
        onDragStop
: null, // Callback(sourceNode)
       
// Make tree nodes accept draggables
        autoExpandMS
: 1000, // Expand nodes after n milliseconds of hovering.
        preventVoidMoves
: true, // Prevent dropping nodes 'before self', etc.
        revert
: false, // true: slide helper back to source if drop is rejected
        onDragEnter
: null, // Callback(targetNode, sourceNode, ui, draggable)
        onDragOver
: null, // Callback(targetNode, sourceNode, hitMode)
        onDrop
: null, // Callback(targetNode, sourceNode, hitMode, ui, draggable)
        onDragLeave
: null // Callback(targetNode, sourceNode)
   
},
    ajaxDefaults
: { // Used by initAjax option
        cache
: false, // false: Append random '_' argument to the request url to prevent caching.
        timeout
: 0, // >0: Make sure we get an ajax error for invalid URLs
        dataType
: "json" // Expect json format and pass json object to callbacks.
   
},
    strings
: {
        loading
: "Loading…",
        loadError
: "Load error!"
   
},
    generateIds
: false, // Generate id attributes like <span id='dynatree-id-KEY'>
    idPrefix
: "dynatree-id-", // Used to generate node id's like <span id="dynatree-id-<key>">.
    keyPathSeparator
: "/", // Used by node.getKeyPath() and tree.loadKeyPath().
    cookieId
: "dynatree", // Choose a more unique name, to allow multiple trees.
    cookie
: {
        expires
: null // Days or Date; null: session cookie
   
},
   
// Class names used, when rendering the HTML markup.
   
// Note:
   
// These settings only apply on initialisation.
   
// If only single entries are passed for options.classNames, all other
   
// values are still set to default.
    classNames
: {
        container
: "dynatree-container",
        node
: "dynatree-node",
        folder
: "dynatree-folder",

        empty
: "dynatree-empty",
        vline
: "dynatree-vline",
        expander
: "dynatree-expander",
        connector
: "dynatree-connector",
        checkbox
: "dynatree-checkbox",
        nodeIcon
: "dynatree-icon",
        title
: "dynatree-title",
        noConnector
: "dynatree-no-connector",

        nodeError
: "dynatree-statusnode-error",
        nodeWait
: "dynatree-statusnode-wait",
        hidden
: "dynatree-hidden",
        combinedExpanderPrefix
: "dynatree-exp-",
        combinedIconPrefix
: "dynatree-ico-",
        hasChildren
: "dynatree-has-children",
        active
: "dynatree-active",
        selected
: "dynatree-selected",
        expanded
: "dynatree-expanded",
        lazy
: "dynatree-lazy",
        focused
: "dynatree-focused",
        partsel
: "dynatree-partsel",
        lastsib
: "dynatree-lastsib"
   
},
    debugLevel
: 1 // 0:quiet, 1:normal, 2:debug
});

Details:

opts.classNames
Type: dictionary, default: $.ui.dynatree.defaults.classNames.
Override class names, that are used, when rendering the HTML markup.
Typically this will require some customization of the CSS file too. 
Note: class names are applied on initialisation only. 
Example:
$("#tree1").dynatree({
    checkbox
: true,
   
// Override class name for checkbox icon:
    classNames
: {checkbox: "dynatree-radio"},
   
[...]
opts.clickFolderMode
Type: integer, default: 3.
Define, how a mouse click will change a folder status.
  1. Single-clicking a folder title (or pressing the [enter] or [space] key) will activate it.
    In this mode documents and folders behave the same.
  2. Single-clicking a folder title expands the node. The folder cannot be activated.
  3. Single-clicking a folder title will activate and expand it.
opts.persist
Type: boolean, default: false.
True: the tree's expansion, activation, focus and selection state is saved to a session cookie, so reloading the page will restore the status.
Notes: this may not work with lazy nodes.
See cookie option.

4.2 Initializing the tree structure

A tree structure is made of nodes. Every node may in turn contain a list child nodes.
A dynatree always has exactly one root node, and all top level nodes of our tree are created as direct descendants.
The root node is usually hidden, so we only see the nodes that we have added.

Dynatree can read it's structure from different sources:

  1. If the children option is passed, it will be used.
  2. Otherwise, if the initAjax option is passed, it will be used.
  3. Otherwise, if the initId option is passed, it will be used.
  4. Otherwise, if the the container <div> element contains a <ul> element, it will be used.
  5. Otherwise, the tree is left empty.
    But we may choose to do so, if we want to modify the tree programmatically.

Methods 1-3 expect a list of node options, as described in the following sections.

4.2.1 Node options

Node options are defined as plain JavaScript objects in curly braces, e.g.
{ … }.
Most of the time we pass a list of node options like this
children: [ { … }, { … }, … ].

The follwing snippet shows the attributes that can be used to define a tree node.
There are reasonable default values for all options, so we may only have to pass a title.

children: [
   
{
    title
: null, // (required) Displayed name of the node (html is allowed here)
    key
: null, // May be used with activate(), select(), find(), ...
    isFolder
: false, // Use a folder icon. Also the node is expandable but not selectable.
    isLazy
: false, // Call onLazyRead(), when the node is expanded for the first time to allow for delayed creation of children.
    tooltip
: null, // Show this popup text.
    href
: null, // Added to the generated <a> tag.
    icon
: null, // Use a custom image (filename relative to tree.options.imagePath). 'null' for default icon, 'false' for no icon.
    addClass
: null, // Class name added to the node's span tag.
    noLink
: false, // Use <span> instead of <a> tag for this node
    activate
: false, // Initial active status.
    focus
: false, // Initial focused status.
    expand
: false, // Initial expanded status.
   
select: false, // Initial selected status.
    hideCheckbox
: false, // Suppress checkbox display for this node.
    unselectable
: false, // Prevent selection.
   
// The following attributes are only valid if passed to some functions:
    children
: null // Array of child nodes.
   
// NOTE: we can also add custom attributes here.
   
// This may then also be used in the onActivate(), onSelect() or onLazyTree() callbacks.
   
},
   
[…]
]

The node options are also passed to the event handlers and can be accessed like this:

onActivate: function(node) {
    alert
("You activated " + node.data.title);
},

Details:

data.activate
If set to true, the node will be initially activated.
data.addClass
Class name that is added to the node's <span> element.
Example:
{ title: "Pretty node", addClass: "customClass1" }
or
<li data="addClass: 'customClass1'">Pretty node
can be styled using css as
span.customClass1 a { background-color: maroon; color: yellow; }
data.children
Array of node options, that are used to generate child nodes.
This option is only valid when passed to certain functions, like DynTreeNode.addChild().
data.expand
If set to true, the node will be initially expanded.
data.focus
If set to true, the node will be initially focused.
data.hideCheckbox
Suppress display of checkbox icon.
It is still possible to (de)select the node using the API, keyboard or initialization data. (The selection state may be visualized by a CSS style.)
See also unselectable.
data.href
Contains the link URL, if the tree was initialized from a <ul> tag:
<div id="tree"><ul>
   
<li class="expanded folder">Search engines
   
<ul>
       
<li><a href="http://www.google.com" target="_self">Google</a>
       
<li><a href="http://www.bing.com">Bing</a>
data.icon
Optional name of an image file relative to the image directory. 
If null specified, a default image is used depending on the node type (folder or document). This is the default.
If false specified, no image is displayed.
data.isFolder
Marks node as folder (treated as a document otherwise).
See Folders and Documents
data.isLazy
Enables delayed loading of the node contents. When a lazy node is expanded for the first time, the onLazyRead() callback is called.
data.key
Uniquely identifies this node. It is optional, but we need it for some functions like tree.activateKey().
If specified, the node's element id is generated by prepending a prefix like this: dynatree-id-1234.
If not specified, a random key id is generated.
data.select
If set to true, the node will be initially selected.
data.target
See data.href.
data.title
Type: string, default: "".
Displayed name of the node (html markup is allowed here).
data.tooltip
Optional string to display in a popup window when the cursor hovers over the node.
data.unselectable
Prevent (de)selection of this node using API, mouse, and keyboard.
It is still possible, to (de)select this node in the initialization data or indirectly (in multi-hier mode).
See also hideCheckbox.

To override the node attribute defaults, modify the structure before initializing dynatree:

<script type="text/javascript">
    $.ui.dynatree.nodedatadefaults["icon"] = false; // Turn off icons by default

    $(function(){
        $("#tree").dynatree({
            rootVisible: false,
            [...]

4.2.2 Folders and documents

When a node is of type folder, it get's a special folder icon and class name.
We usually use them to hold child nodes.
Also, folders can be expanded by clicking the title text (this behavior can be controlled using the clickFolderMode option).

Non-folders ('documents') may also contain child nodes.
Clicking on a child node activates it, so we have to click the small [+] icon in front to expand such a document node.

4.2.3 Initializing the tree structure from an object array

In the quick example above we have already seen how a tree is initialized by passing a node array with the children option.

$("#tree").dynatree({
    children
: [ ],
   
[…]
});

See also Node options.

4.2.4 Initializing the tree structure from an Ajax response

Instead of passing an array of data objects, we can pass a url in the initAjax option that will be used to contact an Ajax web service.

$("#tree").dynatree({
    initAjax
: {url: "/ajaxTree",
               data
: {key: "root", // Optional arguments to append to the url
                      mode
: "all"
                     
}
               
},
   
[…]
});

The web service is expected to return a valid JSON node list, formatted like this:
[ { ... }, { ... }, ... ].

Because the data request is performed asynchronously, the document will load faster. Dynatree will display a spinning wheel, while waiting for the request to complete.

See Loading child nodes on demand for details.
See Persistence for lazy trees for a sample on how to combine this with persistence.

4.2.5 Initializing the tree structure from a <ul> element

If the container <div> contains a <ul> element, the node titles are read from the <li> tags.
If the title contains html markup, it may be better to wrap it inside a span element.

All other node options are specified in the data attribute of a <li> element. For example

<li data="url: 'http://jquery.com'">jQuery home
<li data="url: 'http://example.com', addClass: 'customClass1'">Example page

Note that the data attribute is not valid in <li> elements in some doctypes (HTML 4.01 transitional and Strict and XHTML 1.0 Strict). Validators will complain about this.
Also, if the id attribute is used to pass a key, it should be alphanumeric and start with a letter to be compliant.
(This doesn't seem to affect the functionality however.)

Nested <ul> elements are used to build a hierarchical tree structure.
After the <ul> element was parsed, it is removed from the DOM tree.

Note that <a> elements are recognized:
<li><a href='URL' target='TARGET'>TITLE</a> will result in
node.data.title = TITLE
node.data.href = URL
node.data.target = TARGET

Try this example...
<head>
   
<!-- Include the required JavaScript libraries: -->
   
<script src='jquery/jquery.js' type="text/javascript"></script>
   
<script src='jquery/jquery-ui.custom.js' type="text/javascript"></script>

   
<link rel='stylesheet' type='text/css' href='skin/ui.dynatree.css' >
   
<script src='jquery.dynatree.js' type="text/javascript"></script>

   
<!-- Add code to initialize the tree when the document is loaded: -->
   
<script type="text/javascript">
    $
(function(){
        $
("#tree").dynatree({
            onActivate
: function(node) {
                alert
("You activated " + node);
           
}
       
});
   
});
   
</script>
</head>
<body>
   
<!-- Add a <div> element where the tree should appear: -->
   
<div id="tree">
       
<ul>
           
<li id="key1" title="Look, a tool tip!">item1 with key and tooltip
           
<li id="key2" class="selected">item2: selected on init
           
<li id="key3" class="folder">Folder with some children
               
<ul>
                   
<li id="key3.1">Sub-item 3.1
                   
<li id="key3.2">Sub-item 3.2
               
</ul>

           
<li id="key4" class="expanded">Document with some children (expanded on init)
               
<ul>
                   
<li id="key4.1">Sub-item 4.1
                   
<li id="key4.2">Sub-item 4.2
               
</ul>

           
<li id="key5" class="lazy folder">Lazy folder
       
</ul>
   
</div>
</body>

4.2.6 Initializing the tree structure programmatically

Finally, it is always possible to program the DynaTree and DynaTreeNode objects directly.

See also Programming dynatree.

Try this example...
$(function(){
   
// Initialize the tree in the onload event
    $
("#tree").dynatree({
        onActivate
: function(node) {
            alert
("You activated " + node);
       
}
   
});
   
// Now get the root node object
   
var rootNode = $("#tree").dynatree("getRoot");
   
// Call the DynaTreeNode.addChild() member function and pass options for the new node
   
var childNode = rootNode.addChild({
        title
: "Child node 1",
        tooltip
: "This child node was added programmatically.",
        isFolder
: true
   
});
   
//
    childNode
.addChild({
        title
: "Document using a custom icon",
        icon
: "customdoc1.gif"
   
});
});

5 Handling events

When a user clicks a node, we want to react in some way. So at least we want to implement an onActivate handler.

All event handlers are passed an instance of DynaTreeNode as argument.
this refers to the Dynatree object.
The node options can be accessed like this:

onActivate: function(node) {
    alert
("You activated " + node.data.title);
},

See also Programming dynatree.

5.1 DynaTree callbacks

The this context is set to the tree object.
Use tree.isUserEvent()tree.isInitializing(), and tree.isReloading() to determine who generated this event.

opts.onActivate(node)
Called when a node was activated.
onActivate: function(node) {
   
if(node.tree.isUserEvent()){
       
[...] // Do something after user activated the node (using mouse or keyboard)
   
}
}
opts.onBlur(node)
Called when a node lost the focus.
opts.onClick(node, event)
Called when a node was clicked.
Use node.getEventTargetType(event) to check which area was clicked.
Return false to prevent default processing (setting focus, activate the node, expand folders, etc.).
onClick: function(node, event) {
   
if(node.getEventTargetType(event) == "title"){
       
[...] // Handle the click event
       
return false;// Prevent default processing
   
}
}
opts.onCreate(node, nodeSpan)
Called after a node's HTML tag was created, i.e. when a node becomes visible for the first time.
This callback may be used to bind events or widgets for nodes that are created lazily or programatically.
onCreate: function(node, nodeSpan) {
    $
(span).click(function(e){
        alert
('clicked ' + node);
   
});
}
(Note that the use of jQuery live events may often be a more efficient solution.)
See also opts.onRender.
opts.onCustomRender(node)
Called before a node's title HTML tag will be created. This happens when a node becomes visible for the first time.
This callback may return a string that will be used instead of the default HTML markup.
onCustomRender: function(node) {
   
return "<span class='dynatree-title'>SPAM</span>"
}
opts.onDblClick(node, event)
Called when a node was double clicked.
Use node.getEventTargetType(event) to check which area was clicked.
Return false to prevent default processing (currently none).
opts.onDeactivate(node)
Called when a node was deactivated.
opts.onExpand(flag, node)
Called when a node was expanded/collapsed.
opts.onFocus(node)
Called when a node receives the focus.
opts.onKeydown(node, event)
Called on keydown events.
Return false to prevent default processing (generate keyboard navigation, focus, expand, activate, etc.).
opts.onKeypress(node, event)
Called on keypress events.
Return false to prevent default processing (currently none).
opts.onLazyRead(node)
Called when a lazy node is expanded for the first time.
opts.onPostInit(isReloading, isError [, XMLHttpRequest, textStatus, errorThrown])
Called when the tree was (re)loaded.
In case of an error, isError will be true and addition info is passed: XMLHttpRequest, textStatus, errorThrown.
opts.onQueryActivate(flag, node)
Called before a node is (de)activated. Return false to prevent this.
opts.onQueryExpand(flag, node)
Called before a node is expanded/collapsed. Return false to prevent this.
opts.onQuerySelect(flag, node)
Called before a node is (de)selected. Return false to prevent this.
opts.onRender(node, nodeSpan)
Called after every time a node's HTML tag was created or changed.
This callback may be used to modify the HTML markup.
onRender: function(node, nodeSpan) {
    $
(nodeSpan).find("a.dynatree-title").css("color", "red");
}
See also opts.onCreate.
opts.onSelect(flag, node)
Called when a node was (de)selected.
opts.dnd.onDragStart(sourceNode)
This function must be defined to enable dragging for the tree. Return false to cancel dragging of node.
opts.dnd.onDragEnter(targetNode, sourceNode, ui, draggable)
Return true to make tree nodes accept dropping of draggables.
opts.dnd.onDragOver(targetNode, sourceNode, hitMode, ui, draggable)
opts.dnd.onDragLeave(targetNode, sourceNode, ui, draggable)
opts.dnd.onDrop(targetNode, sourceNode, hitMode, ui, draggable)
This function must be defined to enable dropping of items on the tree.
opts.dnd.onDragStop(sourceNode)
ajaxOptions.success(node)
(Passed as argument to node.appendAjax(...).)
Called after nodes have been created and the waiting icon was removed. 'this' is the options for this Ajax request
ajaxOptions.error(node, XMLHttpRequest, textStatus, errorThrown)
(Passed as argument to node.appendAjax(...).)

5.2 Handling activate/click

The following example handles an activation event by opening a url in a new window.
This assumes, that we have defined an additional custom attribute named 'url' in the node options, like so:

<ul>
   
<li data="url: 'http://jquery.com'">jQuery home
   
<li data="url: 'http://docs.jquery.com'">jQuery docs

or

children: [
   
{ title: "jQuery home", url: "http://jquery.com" },
   
{ title: "jQuery docs", url: "http://docs.jquery.com" },

Also, the title of the currently active node is displayed in the <span id='echoActive'> tag.

Try this example...
$("#tree").dynatree({
   
[…]
    onActivate
: function(node) {
       
if( node.data.url )
            window
.open(node.data.url);
        $
("#echoActive").text(node.data.title);
   
},
    onDeactivate
: function(node) {
        $
("#echoActive").text("-");
   
},
   
[…]
});

5.3 Handling selection events

The following example writes the title of the currently focused node to the <span id='echoFocused'> element:

Try this example...
    $("#tree").dynatree({
       
[…]
        onSelect
: function(flag, node) {
           
if( ! flag )
                alert
("You deselected node with title " + node.data.title);
           
var selectedNodes = node.tree.getSelectedNodes();
           
var selectedKeys = $.map(selectedNodes, function(node){
               
return node.data.key;
           
});
            alert
("Selected keys: " + selectedKeys.join(", "));
       
},
       
[…]
   
});
   

5.4 Handling focus changes

If we use the cursor keys to walk the tree nodes, the focus changes to the next node, but the active node remains the same unless we use [Space] or [Enter].
Also, when we click on a folder node it is only focused, but not activated.

The following example writes the title of the currently focused node to the <span id='echoFocused'> element:

Try this example...
$("#tree").dynatree({
   
[…]
    onFocus
: function(node) {
        $
("#echoFocused").text(node.data.title);
   
},
    onBlur
: function(node) {
        $
("#echoFocused").text("-");
   
},
   
[…]
});

5.5 Loading child nodes on demand ('lazy loading')

Dynatree supports delayed loading of tree nodes, which means we read the child nodes only when their parent is expanded.

Because the data request is performed asynchronously, the browser will not block and is still responsive. Dynatree will display a spinning wheel, while waiting for the request to complete.

To make this happen, we have to

  • Mark some or all nodes as lazy, by setting the isLazy option to true.
  • Implement a backend web service that delivers a JSON formatted node list.
  • Implement the onLazyRead callback to send an Ajax request, create the child nodes, and set the 'ok' status.
Try this example...
$("#tree").dynatree({
   
[…]
    onLazyRead
: function(node){
        node
.appendAjax({url: "/sendData",
                           data
: {"key": node.data.key, // Optional url arguments
                                 
"mode": "all"
                                 
}
                         
});
   
},
   
[…]
});

Typically we would implement onLazyRead by calling the node.appendAjax() function.
It expects one option object argument, as described in the documentation for the jQuery.ajax() command.

These options are set by default:
cache: false and dataType: "json".

Note that the success and error options are implemented differently from the jQuery standard:
They pass different arguments and are called after the Dynatree default processing took place.
This makes it easy to use the success callback to apply any custom postprocessing, for example activating a node or binding events.

$("#tree").dynatree({
   
[…]
    onLazyRead
: function(node){
        node
.appendAjax({url: "/sendData",
                           data
: {"key": node.data.key, // Optional url arguments
                                 
"mode": "all"
                                 
},
                           
// (Optional) use JSONP to allow cross-site-requests
                           
// (must be supported by the server):
//                         dataType: "jsonp",
                           success
: function(node) {
                               
// Called after nodes have been created and the waiting icon was removed.
                               
// 'this' is the options for this Ajax request
                               
},
                           error
: function(node, XMLHttpRequest, textStatus, errorThrown) {
                               
// Called on error, after error icon was created.
                               
},
                           cache
: false // Append random '_' argument to url to prevent caching.
                         
});
   
},
   
[…]
});

The web service is expected to return a valid JSON node list, formatted like this:
[ { "title": "Node1", "isLazy": true, "key": "BC13B21636CD6D5C", … }, { … }, … ]
See Node options for a list of supported attributes.

When the response was received, appendAjax() appends the child nodes and calls node.setLazyNodeStatus(DTNodeStatus_Ok) to remove the wait icon.

Note that initAjax is simply a special case, where the tree's root node is loaded on startup.
See Initializing the structure from an Ajax response for a sample to initialize the whole tree with an Ajax request.

This sample code (written in Python) shows how a server could create a response:

# Build node list as JSON formatted string:
res
= '['
res
+= '{ "title": "Node 1", "key": "k1", "isLazy": true },'
res
+= '{ "title": "Node 2", "key": "k2", "isLazy": true },'
res
+= '{ "title": "Node 3", "key": "k3", "isLazy": true }' # no trailing "," at the last line
res
+= ']'

# Add support for the JSONP protocol:
# This means, if the request URL contains an argument '?callback=xxx',
# wrap the result as 'xxx(result)'
if "callback" in argDict:
    res
= argDict["callback"] + "(" + res + ")"

# Make sure, content type is JSON:
start_response
("200 OK", [("Content-Type", "application/json")])

# Return result (the square brackets are Python / WSGI specific):
return [ res ]

See dynatree_server.py for a sample implementation of a web server that handles this (~150 lines of Python code).
When this server is running, you can try this live example of a lazy tree.

5.5.1 Loading custom formats

If we need more control, or if the server cannot provide JSON in Dynatree's native format, we could also use jQuery.ajax() to fetch the data, then transform it and callnode.addChild():

$("#tree").dynatree({
   
[…]
    onLazyRead
: function(node){
        $
.ajax({
            url
: […],
            success
: function(data, textStatus){
               
// In this sample we assume that the server returns JSON like
               
// { "status": "...", "result": [ {...}, {...}, ...]}
               
if(data.status == "ok"){
                   
// Convert the response to a native Dynatree JavaScipt object.
                   
var list = data.result;
                    res
= [];
                   
for(var i=0, l=list.length; i<l; i++){
                       
var e = list[i];
                        res
.push({title: "" + i + ": " + e.fcurr + "-" + e.tcurr + ":" + e.ukurs,
                            icon
: false});
                   
}
                   
// PWS status OK
                    node
.setLazyNodeStatus(DTNodeStatus_Ok);
                    node
.addChild(res);
               
}else{
                   
// Server returned an error condition: set node status accordingly
                    node
.setLazyNodeStatus(DTNodeStatus_Error, {
                        tooltip
: data.faultDetails,
                        info
: data.faultString
                   
});
               
}
           
}
       
});
   
[…]
});

6 Drag'n'drop

Drag and drop functionality is enabled by defining the appropriate callbacks:

    $("#tree").dynatree({
       
[...]
        dnd
: {
            onDragStart
: function(node) {
               
/** This function MUST be defined to enable dragging for the tree.
                 *  Return false to cancel dragging of node.
                 */

                logMsg
("tree.onDragStart(%o)", node);
               
return true;
           
},
            onDrop
: function(node, sourceNode, hitMode, ui, draggable) {
               
/** This function MUST be defined to enable dropping of items on
                 * the tree.
                 */

                logMsg
("tree.onDrop(%o, %o, %s)", node, sourceNode, hitMode);
                sourceNode
.move(node, hitMode);
           
}
       
}
   
});

There are a lot more callbacks that can be used to fine tune the behaviour. Check the source code in the samples in the Example Browser to learn more.

7 Persistence

When initializing a tree in persist mode, we first check, if persistence cookies already exist.
If not, we assume first-time initializing, read the status from the tree source, and store it into new cookies.

Otherwise we assume re-loading, ignore the source node attributes and override them using the cookie info.

In either case, the 'active', 'expand' and 'select' status of a node is read from the data or restored from the cookies.
However, no onQueryActivate, onActivate, onExpand, onSelect, etc. events are fired. (The only event that may be fired is onFocus.)
In order to generate these events on reload, we may use the callback function onPostInit() and tree.reactivate().

$("#tree").dynatree({
   
[…]
    onPostInit
: function(isReloading, isError) {
       
// 'this' is the current tree
       
// isReloading is true, if status was read from existing cookies
       
// isError is only used in Ajax mode
       
// Fire an onActivate() event for the currently active node
       
this.reactivate();
   
},
    onActivate
: function(node) {
       
// Use status functions to find out about the calling context
       
var isInitializing = node.tree.isInitializing(); // Tree loading phase
       
var isReloading = node.tree.isReloading(); // Loading phase, and reading status from cookies
       
var isUserEvent = node.tree.isUserEvent(); // Event was triggered by mouse or keyboard

        $
("#echoActive").text(node.data.title);
   
},

7.1 Persistence for lazy trees

The problem with restoring the status of a lazy tree is, that the currently active or selected nodes may not be part of the tree, when it is freshly re-loaded.

The basic idea is to leave it up to the backend web service to deliver not only the top-level nodes, but also all nodes that are required to display the current status.

For example, it may be neccessary to render 3 parent nodes, if the active node is at level # 4.
The backend may also deliver all child nodes of expanded parents.
Or in selectMode 3 (hierarchical) we may want to send all nodes, that are partly selected.

initAjax (and appendAjax) have 3 options, that make it easy to pass persistence information to the web service.

See dynatree_server.py for a sample implementation of a web server that handles this (~150 lines of Python code).
When this server is running, you can try this live example of a lazy tree.

$("#tree").dynatree({
   
[…]
    initAjax
: {url: "/ajaxTree",
               data
: {key: key,
                      mode
: mode,
                      filter
: filter
                     
},
               addActiveKey
: true,  // add &activeKey= parameter to URL
               addFocusedKey
: true, // add &focusedKey= parameter to URL
               addExpandedKeyList
: true // add &expandedKeyList= parameter to URL
               
},
    onPostInit
: function(isReloading, isError) {
       
// In lazy mode, this will be called *after* the initAjax request returned.
       
// 'this' is the current tree
       
// isReloading is set, if status was read from existing cookies
       
// isError is set, if Ajax failed
       
// Fire an onActivate() event for the currently active node
       
this.reactivate();
   
},
    onActivate
: function(node) {
       
// Use status functions to find out about the calling context
       
var isUserEvent = node.tree.isUserEvent(); // Event was triggered by mouse or keyboard

        $
("#echoActive").text(node.data.title);
   
},

8 Programming dynatree

The dynatree widget provides a set of plugin methods, that can be called directly.
For example

$("#tree").dynatree("disable");

However this plugin implementation is based on a class called DynaTree that holds a set of DynaTreeNode objects.
These classes expose methods that can be accessed for enhanced functionality.
For example:

// Get the DynaTree object instance:
var tree = $("#tree").dynatree("getTree");
// Use it's class methods:
tree
.activateKey("key1234");
// Get a DynaTreeNode object instance:
var node = tree.getNodeByKey("key7654");
var rootNode = $("#tree").dynatree("getRoot");
// and use it
node
.toggleExpand();

8.1 Dynatree Plugin methods

Besides the constructor, that is called like this:

$("#tree").dynatree({
   
[…]
});

The following methods are globally available from the ui.dynatree namespace:

$.ui.dynatree.getNode(el)
Return a DynaTreeNode object for a given DOM element.
`el` may be a DOM element or a jQuery object. Example:
$("#tree a").hover(function(){
       
var node = $.ui.dynatree.getNode(this);
        logMsg
("Hover in %s", node);
   
}, function(){
       
[...]
   
});
$.ui.dynatree.getPersistData(cookieId, cookieOpts)
Return cookie persistence info as dictionary.
$.ui.dynatree.version
Release version number.

The following methods are directly available from the plugin:

$("#tree").dynatree("disable")
Disable event handling and add a class 'dynatree-disabled' to the container element.
$("#tree").dynatree("enable")
Enable event handling and remove the 'dynatree-disabled' class from the container element.
$("#tree").dynatree("option", )
Set a dynatree option at runtime. Example:
$("#tree").dynatree("option", "autoCollapse", true);
$
("#tree").dynatree("option", "fx", { height: "toggle", duration: 200 });
$("#tree").dynatree("getTree")
Return the associated DynaTree object.
$("#tree").dynatree("getRoot")
Return the root DynaTreeNode object of the tree.
$("#tree").dynatree("getActiveNode")
Return the DynaTreeNode object that is currently active.
(May be null.)
$("#tree").dynatree("getSelectedNodes")
Return an array of DynaTreeNode objects that are currently selected.
(May be empty: [ ].)

8.2 DynaTree class members

tree.activateKey(key)
Activate and focus node with a given key and fire focus and activate events.
If activeVisible option is set, all parents will be expanded as necessary.
If key is null, the current activation is removed.
Return the active DynaTreeNode.
tree.count()
Return the number of nodes.
tree.disable()
Disable input for the tree and display gray. This is a shortcut for $("#tree").dynatreee("disable").
tree.enable()
Complement to tree.disable().
tree.enableUpdate(enable)
Turn rendering on or off and return the previous mode. Disabling update may speedup processing, when adding lots of nodes.
Don't forget to turn rendering back on, after applying the changes:
var prevMode = tree.enableUpdate(false);
[...]
tree
.enableUpdate(prevMode);
tree.getActiveNode()
Return the currently active DynaTreeNode or null.
tree.getNodeByKey(key)
Return DynaTreeNode with a given key or 'null' if not found.
tree.getPersistData()
Return cookie persistence info as dictionary.
There is also a global function available: $.ui.dynatree.getPersistData(cookieId, cookieOpts).
tree.getRoot()
Return the invisible root DynaTreeNode object. All visible toplevel nodes are children of this system node.
tree.getSelectedNodes(stopOnParents)
Return a list of currently selected DynaTreeNodes (may be an empty array).
If stopOnParents is set to true, children of selected nodes are skipped. This may be convenient in selectMode:3 (multi-hier).
tree.initialize()
Constructor (internal use).
tree.isInitializing()
Return true, if the tree is in the init phase.
Use this function in an event handler, to check if the event was fired during a page reload, when the cookie persistence is applied.
tree.isReloading()
Return true, if the tree is in the init phase and persistence is on, and the current status was read from existing cookies.
Use this function in an event handler, to check if the event was fired during a page reload, when the cookie persistence is applied.
tree.isUserEvent()
Return true, if the tree is processing a user event.
Use this function in an event handler, to check if the event was fired in response to a mouse click or key stroke.
Otherwise, the the event was generated by an API call or during initialization.
tree.loadKeyPath(keyPath, callback)
Make sure that a node with a given ID is loaded, by traversing - and loading - its parents. This method is ment for lazy hierarchies.
A callback is executed for every node as we go.
tree.loadKeyPath("/_3/_23/_26/_27", function(node, status){
   
if(status == "loaded") {
       
// 'node' is a parent that was just traversed.
       
// If we call expand() here, then all nodes will be expanded
       
// as we go
        node
.expand();
   
}else if(status == "ok") {
       
// 'node' is the end node of our path.
       
// If we call activate() or makeVisible() here, then the
       
// whole branch will be exoanded now
        node
.activate();
   
}else if(status == "notfound") {
       
var seg = arguments[2],
            isEndNode
= arguments[3];
   
}
});
tree.logDebug(msg), logInfo(msg), logWarning(msg)
(Internal use).
tree.reactivate(setFocus)
Fire onQueryActivate and onActivate events for the currently active node (if there is one).
This may be useful when processing an onPostInit callback.
tree.redraw()
Render all visible nodes. See node.render() for details.
tree.reload()
Reload the the tree.
For lazy trees this is done, by re-submitting the Ajax request that was defined in the initAjax option.
This will not work, if the tree was loaded from an embedded <UL> element, because these elements are removed after they have been rendered.
tree.renderInvisibleNodes()
Force immediate HTML creation for all nodes, even if inside collapsed branches. This may be useful, if we want to bind events or otherwise must access these HTML elements.
It will however degrade performance, especially on large trees!
See node.render() for details.
tree.selectKey(key, flag)
Select or deselect node with a given key and fire focus and select events.
Return the selected DynaTreeNode.
tree.serializeArray(stopOnParents)
Return selected nodes as array of {name: 'TreeName', value: 'NodeKey'} objects, where name is the 'name' attribute of the tree's <div> element.
This format is compatible with jQuery's serializeArray() function and may be used in $.post() calls.
See also the 'form' sample in the Example Browser.
tree.toDict(includeRoot)
Convert the tree into a JavaScript object.
If 'includeRoot' is false or omitted, the result is an array of node dcts.
See node.toDict() for details.
tree.visit(fn, includeRoot)
Call fn(node) for all nodes.
Stop iteration, if fn() returns false. Stop iteration of the current branch, if fn() returns 'skip'.

8.3 DynaTreeNode class members

Attribute 'data'
Use this attribute to access all node options that were passed to create this node.
For example node.data.title or node.data.tooltip. See also Node options.
node.activate()
Activate this node - according to flag - and fire a onActivate event.
If activeVisible option is set, all parents will be expanded as necessary.
Focus is not set.
node.activateSilently()
Same as activate(), but does not fire events.
node.addChild(nodeData[, beforeNode])
Append a new child node.
nodeData may be a node data object as defined in Node options, or an array thereof. Also objects and arrays of type DynaTreeNode are allowed.
Example:
var node = $("#tree").dynatree("getTree").getNodeByKey("1234");
node
.addChild({title: "New Node", key: "3333"});
Since the nodeData may be a nested data structure, it is possible to create a deep hierarchy with one call.
The optional argument beforeNode specifies a child DynaTreeNode that the new node will be inserted before. (If this parameter is null or omitted, the new node will be appended.)
node.appendAjax(ajaxOptions)
Accepts a standard jQuery Ajax option object.
An asynchronous request is started, so this function returns immediately. While loading, a spinning wheel is displayed. On error, a red icon is shown.
The request handler must return a JSON object, formatted like the data's children object.
Use the setLazyNodeStatus() function to display the result.
See Loading child nodes on demand ('lazy loading') for details.
node.countChildren()
Return the number of descendant nodes, i.e. direct and indirect children.
node.deactivate()
Deactivate this node and fire an onDeactivate event.
node.expand(flag)
Expand or collapse this node - according to flag.
node.focus()
Set focus to this node. Parent nodes are expanded, if this is necessary to make it visible.
node.getChildren()
Return list of child nodes or null.
For lazy nodes that have not yet been loaded, undefined is is returned.
node.getEventTargetType(event)
Return the part of a node, that a click event occurred on.
Possible values: 'prefix' 'expander', 'checkbox', 'icon', 'title'.
null is returned else.
Note: there is no check, if the event was fired on this node.
node.getLevel()
Return the depth (i.e. number of parent nodes).
0 is returned for the root node.
node.getNextSibling()
Return the successor node or null.
node.getParent()
Return the parent node or null.
node.getPrevSibling()
Return the predecessor node or null.
node.hasChildren()
Return true if node has child nodes.
Return false if node is a leaf, i.e. has no child nodes.
Return undefined if this is a lazy node, that was not yet successfully loaded.
A test for 'node is surely empty' would be coded like
if(node.hasChildren() === false) ...
node.isActive()
Return true, if this node is activated. Only one tree node may be active at any time.
node.isChildOf(otherNode)
Return true, if this node is a direct child of otherNode.
node.isDescendantOf(otherNode)
Return true, if this node is a descendent (direct or indirect child) of otherNode.
node.isExpanded()
Return true, if the node is expanded.
node.isFirstSibling()
Return true, if this node is the first of all children of the current parent.
node.isFocused()
Return true, if this node is has the focus.
node.isLastSibling()
Return true, if this node is the last of all children of the current parent.
node.isLazy()
Return true, if the node is lazy (loaded or not).
node.isLoading()
Return true, if the node is lazy and currently loading (i.e. an Ajax request is active).
node.isSelected()
Return true, if the node is selected.
node.isStatusNode()
Return true, if this is an temporary status node. Status nodes are created while loading lazy data, to display a throbber or error condition.
node.isVisible()
Return true, if the node is visible, i.e. all parents are expanded.
node.makeVisible()
Expand all parents as neccessary, to make this node visible.
node.move(targetNode, mode)
Move this node to targetNode. Possible mode:
  • child: append this node as last child of targetNode. This is the default. To be compatble with the D'n'd hitMode, we also accept 'over'.
  • before: add this node as sibling before targetNode.
  • after: add this node as sibling after targetNode.
node.reload(force)
Deprecated. Use reloadChildren() instead.
node.reloadChildren(callback)
Discard and reload all children of a lazy node by triggering the onLazyRead event. if callback is passed, it is called after the Ajax request was executed. Example
node.reloadChildren(function(node, isOk){
   
if(!isOk) alert("Node " + node + " could not be reloaded.");
});
node.remove()
Remove this node and descendents from tree.
node.removeChildren()
Remove all child nodes and descendents.
node.render(useEffects, includeInvisible)
Redraw this node with current attributes. All HTML markup is updated and class names are added according to current status.
If this node is expanded, markup for children is recursively generated as well.
  • useEffects:
    (default: false) Set to false to prevent animated expand effects, which would be applied asynchronously.
  • includeInvisible:
    (default: false) Force HTML creation for all descendants, even if inside a collapsed branch.
    This may be useful, if we want to bind events or otherwise access these HTML elements. It will however degrade performance, especially on large trees.

Most of the time, there is no need to call this explicitly, since it is internally called on state changes.
node.resetLazy()
Remove all children from a lazy node and make sure it is collapsed. The node will be re-loaded when expanded the next time.
node.scheduleAction(mode, ms)
Schedule a delayed action. Possible mode:
  • expand: Expand this node after ms microseconds.
  • activate: Activate this node after ms microseconds.
  • cancel: cancel pending action, if any was scheduled.
node.select(flag)
Select or deselect this node - according to flag - and fire an onSelect event.
node.setLazyNodeStatus(status)
Display a dummy child node, to provide feedback, when loading a lazy node's content. 
Possible status:
  • DTNodeStatus_Loading: show a spinning wheel, with 'loading...' message.
  • DTNodeStatus_Error: show an error icon and message.
  • DTNodeStatus_Ok: Remove the status node.
Messages may be customized using the strings.loading and strings.loadError options.
node.setTitle(title)
Change current node title and redraw.
node.sortChildren(cmp, deep)
Sort child list by title.
cmd: optional compare function. If ommitted sorting is done by node titles.
deep: optional: pass true to sort all descendant nodes.
Example
// Custom compare function (optional) that sorts case insensitive
var cmp = function(a, b) {
    a
= a.data.title.toLowerCase();
    b
= b.data.title.toLowerCase();
   
return a > b ? 1 : a < b ? -1 : 0;
};
node
.sortChildren(cmp, false);
node.toDict(recursive, callback)
Convert the node into a JavaScript object.
recursive: set to true, to include child nodes.
callback: (optional) function to allow modifications.
Example
var cb = node.toDict(true, function(dict){
    dict
.title = "Copy of " + dict.title;
   
delete dict.key; // prevent duplicate keys
});
node.toggleExpand()
Toggle expansion state.
Expanding a lazy node, fires a onLazyRead event.
node.toggleSelect()
Toggle selection state.
node.visit(fn, includeSelf)
Call fn(node) for all child nodes.
Stop iteration, if fn() returns false. Stop iteration of the current branch, if fn() returns the string 'skip'.
node.visitParents(fn, includeSelf)
Call fn(node) for all parent nodes.
Stop iteration, if fn(node) returns false.

8.4 Programming examples

The follwing code snippets should give an idea on how to use the API.

8.4.1 Example: Select a node with key '1234'

$("#tree").dynatree("getTree").selectKey("1234");
// or another way:
$
("#tree").dynatree("getTree").getNodeByKey("1234").select();
// .. or yet another way (if 'generateIds' option was enabled):
$
("#dynatree-id-1234").prop("dtnode").select();

8.4.2 Example: Access the currently active node

var node = $("#tree").dynatree("getActiveNode");
if( node ){
    alert
("Currently active: " + node.data.title);
}

8.4.3 Example: Retrieve a node using for a DOM element or jQuery object

$(".dynatree-partsel").each(function(){
   
var node = $.ui.dynatree.getNode(this);
   
[...]
});

8.4.4 Example: Rename the active node

var node = $("#tree").dynatree("getActiveNode");
node
.data.title = "My new title";
node
.render();

8.4.5 Example: Add a child to the active node

var node = $("#tree").dynatree("getActiveNode");
var childNode = node.addChild({
    title
: "My new node",
    tooltip
: "This folder and all child nodes were added programmatically."
});

Note: instead of passing a single child object, we could also pass an array of such objects.
Also, the children may again contain children attributes, thus defining a sub tree.

8.4.6 Example: Add a hover handler and find the hovered node from any sub element

// Bind hover events to the tree's <a> tags:
$
("#tree a").hover(function(){
       
var node = $.ui.dynatree.getNode(this);
        logMsg
("Hover in %s", node);
   
}, function(){
       
var node = $.ui.dynatree.getNode(this);
        logMsg
("Hover out %s", node);
   
});

8.4.7 Example: Expand all nodes

$("#tree").dynatree("getRoot").visit(function(node){
    node
.expand(true);
});

8.4.8 Example: Save current tree status to the backend

// Get a JavaScript object copy of the tree
var dict = $("#tree").dynatree("getTree").toDict();
// ... then use Ajax to send this to your server...

8.4.9 Example: activate a node depending on URL

This sample shows how to parse the page URL and activate a node accordingly: http://server/_test-194.html?activate=_11

// Add a helper function to parse the URL
function getURLParameter(name) {
   
return unescape(
       
(RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
   
);
}
// Evaluate the URL after the tree was loaded
$
(function(){
    $
("#tree").dynatree({
       
[...]
        onPostInit
: function(isReloading, isError) {
           
var key = getURLParameter("activate");
           
if( key ) {
               
this.activateKey(key);
           
}
       
},

9 Theming and translation

The tree's fonts, colors, and icons are defined using CSS, so changing the appearance is simply a matter of including a custom stylesheet or by replacing icons.gif with another version.

Try this example...
<script src="../jquery/jquery.js" type="text/javascript"></script>
<script src="../jquery/jquery-ui.custom.js" type="text/javascript"></script>
<script src="../src/jquery.dynatree.js" type="text/javascript"></script>
<!-- Include the basic stylesheet: -->
<link href="../src/skin-vista/ui.dynatree.css" rel="stylesheet" type="text/css">
<!-- Override CSS with a custom stylesheet : -->
<link href="skin-custom/custom.css" rel="stylesheet" type="text/css" >

<script type="text/javascript">
    $
(function(){
        $
("#tree").dynatree({
           
[…]
       
});
   
});
</script>

Custom.css would include lines like this:

.dynatree-has-children span.dynatree-icon
{
    background
-position: 0 0;
    background
-image: url("doc_with_children.gif");
}

Changing the appearance and icons of single nodes is done by assigning a custom class:

<ul>
   
<li data="addClass: 'custom1'">Document with custom class

or

children: [
   
{ title: "Document with custom class", addClass: "custom1" },

we would then add CSS definitions for the new node to our stylesheet:

span.custom1 a
{
    background
-color: #ffffbb;
    color
: maroon;
}
span
.custom1 span.dynatree-icon
{
    background
-position: 0 0;
    background
-image: url("customDoc2.gif");
}

9.1 Translation

Strings can be translated in the tree options:

$("#tree").dynatree({
   
[…]
    strings
: {
        loading
: "Daten werden geladen…",
        loadError
: "Fehler beim Laden!"
   
},
});

10 Feedback, version history, credits and known issues

10.1 Credits

I am using the planize plugin by Nicolas Perriault for the table of contents.
I am using prettify.js by Mike Samuel for syntax highlighting in the of source code samples.

10.2 Feedback and support

First of all: this is work in progress.
Any kind of feedback is very welcome :-)

  • discussion forum is in place to ask questions or discuss features.
  • Check Stack Overflow for existing questions.
  • Use the Issue Tracker to get a list of known bugs, or vote for a feature.
    Please make sure you searched the group and issue tracker, before adding a new request.
  • If you like: Make a donation.


Posted by 1010
반응형

Remote Repository와 Local Repository 가 있다.

 

의존관계에 있는 artifact 를 취득할 때

HTTP, FTP, SCP 등의 프로토콜로

Remote Repository 에 접근하여

필요한 artifact를 받아

Local Repository 에 저장하여 caching 한다.

 

Local Repository는 maven 실행 유저의

홈디렉토리에 .m2 디렉토리가 생성된다.

(windows의 경우 Documents and Settings 아래 사용자 폴더가 홈 디렉토리다.)

 

의존관계에 있는 artiface 가 필요할 때

우선 Local Repository 에서 검색하고

없는 경우 Remote Repository 에서 받아내려온다.

 

기본 Remote Repository 를 Central Repository 라고 하며

특별한 설정 없이 이용이 가능하다.

http://repo1.maven.org/maven2

 

실제 central repository에서 필요한 것을 찾기는 어려우니

아래 사이트를 사용하면 검색이용이하다.

http://mvnrepository.com

 

repository 에서 필요로하는 artifact를 찾기 위해서는

group id, artifact id, version 정보가 있어야

필요로하는 유일한 artifact를 찾을 수 있다.

 

repository에 등록된 자료가

꼭 maven으로 만들어지지 않더라도

그것을 artifact라고부른다.

 

Posted by 1010
반응형

http://search.maven.org/#browse%7C47

내부망에서 작업할때

jar 파일이 없거나

maven 에러날때 직접 다운

 

The Central Repository Browser

Index of

central/

Name Last Modified Size
HTTPClient/ 01-Nov-2005 717.8 K
abbot/ 12-Feb-2010 1.4 M
acegisecurity/ 23-Dec-2005 4.7 M
activation/ 22-Dec-2005 369 B
activecluster/ 29-Jul-2011 1.5 M
activeio/ 01-Nov-2005 4.6 M
activemq-jaxb/ 01-Nov-2005 0 B
activemq/ 01-Nov-2005 922.5 M
activesoap/ 01-Nov-2005 22.9 M
activespace/ 29-Jul-2011 117.4 K
adarwin/ 01-Nov-2005 51.6 K
aelfred/ 01-Nov-2005 26.7 K
aislib/ 01-Nov-2005 271.5 K
altrmi/ 01-Nov-2005 609.5 K
am/ 12-Feb-2013 104.9 K
andromda/ 01-Nov-2005 104.4 K
annogen/ 01-Nov-2005 2.2 M
ant-contrib/ 09-Aug-2008 3.0 M
ant-doxygen/ 01-Nov-2005 16.4 K
ant/ 01-Nov-2005 25.4 M
ant4eclipse/ 29-Jul-2011 331.6 K
antlr/ 01-Nov-2005 4.9 M
anttex/ 01-Nov-2005 5.0 K
aopalliance/ 28-Oct-2005 26.5 K
apache-jaxme/ 01-Nov-2005 1.1 M
aptconvert/ 01-Nov-2005 442.2 K
ar/ 25-Aug-2012 28.8 M
args4j/ 28-Aug-2012 8.2 M
ashkay/ 01-Nov-2005 20.0 K
ashkelon/ 01-Nov-2005 290.9 K
asia/ 18-Feb-2013 6.6 M
asm/ 07-Jul-2009 9.2 M
aspectj/ 21-Dec-2005 109.6 M
aspectwerkz/ 01-Nov-2005 247.5 M
at/ 07-Jun-2013 21.8 M
au/ 24-Jun-2011 5.9 M
avalon-activation/ 01-Nov-2005 489.9 K
avalon-apps/ 01-Nov-2005 18.6 K
avalon-composition/ 01-Nov-2005 1.4 M
avalon-cornerstone/ 01-Nov-2005 140.1 K
avalon-extension/ 01-Nov-2005 82.1 K
avalon-framework/ 01-Nov-2005 6.1 M
avalon-http/ 19-Jul-2006 27.0 K
avalon-logging/ 01-Nov-2005 175.8 K
avalon-logkit/ 01-Nov-2005 248.5 K
avalon-meta/ 01-Nov-2005 658.9 K
avalon-phoenix/ 01-Nov-2005 284.7 K
avalon-repository/ 01-Nov-2005 650.2 K
avalon-util/ 01-Nov-2005 241.7 K
avalon/ 20-Oct-2006 868.7 K
axion/ 01-Nov-2005 1.2 M
axis/ 20-Oct-2006 26.9 M
axis2/ 05-May-2006 12.8 M
azote/ 01-Nov-2005 47.4 K
backport-util-concurrent/ 20-Feb-2008 5.1 M
backport175/ 01-Nov-2005 4.6 M
barsuift/ 27-May-2010 8.7 M
batik/ 01-Nov-2005 11.2 M
bcel/ 28-Oct-2005 1.7 M
be/ 19-Aug-2013 29.7 M
beehive/ 01-Nov-2005 5.1 M
berkano/ 01-Nov-2005 27.7 M
berkeleydb/ 01-Nov-2005 6.8 M
binky/ 25-Feb-2010 801.2 K
biz/ 11-Apr-2013 55.3 M
blissed/ 01-Nov-2005 1.0 M
boo/ 06-Nov-2006 219.9 M
bouncycastle/ 03-Sep-2009 45.3 M
boxstuff/ 01-Nov-2005 29.1 K
bsf/ 01-Nov-2005 534.0 K
bsh/ 01-Nov-2005 1.2 M
burlap/ 01-Nov-2005 79.6 K
by/ 01-Nov-2012 122.3 M
c10n/ 05-Mar-2013 315.5 K
c3p0/ 01-Nov-2005 5.9 M
ca/ 14-Aug-2013 2.8 G
cactus/ 12-Apr-2008 41.7 M
cargo/ 01-Nov-2005 2.7 M
cas/ 23-Jun-2006 255.3 K
castor/ 06-Dec-2007 202.0 M
cc/ 02-Jul-2013 171.8 M
cewolf/ 01-Nov-2005 515.9 K
cglib/ 11-May-2011 19.0 M
ch/ 09-Aug-2013 456.5 M
charlotte/ 01-Nov-2005 130.6 K
checkstyle/ 28-Oct-2005 12.1 M
classworlds/ 20-May-2010 5.3 M
clickstream/ 24-Nov-2005 9.7 K
clirr/ 01-Nov-2005 36.0 K
clover/ 01-Nov-2005 17.1 M
cmsdeploy/ 07-Dec-2005 749 B
cn/ 19-Sep-2013 2.1 M
co/ 08-Aug-2013 18.5 M
cobertura/ 07-Feb-2006 526.7 K
coconut/ 01-Nov-2005 1.8 M
cocoon/ 10-Jun-2008 203.4 M
code/ 20-May-2010 1.5 M
code316/ 01-Nov-2005 49.9 K
codehaus/ 17-Jul-2008 0 B
colt/ 01-Nov-2005 1.6 M
com/ 20-Sep-2013 142.2 G
commons-attributes/ 04-Jul-2006 348.0 K
commons-beanutils/ 25-Mar-2010 14.1 M
commons-betwixt/ 01-Nov-2005 3.5 M
commons-chain/ 09-Mar-2013 1.2 M
commons-cli/ 09-Mar-2013 786.4 K
commons-codec/ 09-Mar-2013 10.3 M
commons-collections/ 09-Mar-2013 15.9 M
commons-compress/ 01-Nov-2005 124.7 K
commons-configuration/ 09-Mar-2013 26.6 M
commons-daemon/ 09-Mar-2013 11.2 M
commons-dbcp/ 09-Mar-2013 4.1 M
commons-dbutils/ 09-Mar-2013 5.1 M
commons-digester/ 09-Mar-2013 14.4 M
commons-discovery/ 09-Mar-2013 1.4 M
commons-el/ 28-Oct-2005 495.0 K
commons-email/ 09-Mar-2013 939.2 K
commons-fileupload/ 09-Mar-2013 4.3 M
commons-grafolia/ 01-Nov-2005 0 B
commons-grant/ 01-Nov-2005 71.4 K
commons-graph/ 01-Nov-2005 148.5 K
commons-http/ 01-Nov-2005 5.8 K
commons-httpclient/ 20-May-2010 21.6 M
commons-i18n/ 01-Nov-2005 7.2 M
commons-io/ 09-Mar-2013 17.0 M
commons-jdbc2pool/ 01-Nov-2005 467 B
commons-jelly/ 20-May-2010 42.7 M
commons-jexl/ 01-Nov-2005 10.3 M
commons-jux/ 01-Nov-2005 6.4 K
commons-jxpath/ 09-Mar-2013 4.3 M
commons-lang/ 09-Mar-2013 12.3 M
commons-latka/ 01-Nov-2005 152.2 K
commons-launcher/ 04-Jul-2006 247.9 K
commons-logging/ 14-Mar-2013 6.6 M
commons-math/ 09-Mar-2013 6.5 M
commons-messenger/ 01-Nov-2005 1.1 M
commons-modeler/ 01-Nov-2005 1.0 M
commons-naming/ 01-Nov-2005 128.3 K
commons-net/ 09-Mar-2013 27.0 M
commons-pool/ 09-Mar-2013 6.7 M
commons-primitives/ 01-Nov-2005 1.5 M
commons-resources/ 01-Nov-2005 49.5 K
commons-scxml/ 09-Mar-2013 2.7 M
commons-services/ 28-Oct-2005 461 B
commons-sql/ 01-Nov-2005 311.1 K
commons-test/ 08-Nov-2005 16.1 K
commons-threadpool/ 01-Nov-2005 7.2 K
commons-transaction/ 01-Nov-2005 925.7 K
commons-util/ 01-Nov-2005 26.7 K
commons-validator/ 28-Oct-2005 6.6 M
commons-vfs/ 01-Nov-2005 1.1 M
commons-xo/ 01-Nov-2005 31.8 K
concurrent/ 28-Oct-2005 1.7 M
continuum/ 01-Nov-2005 2.4 K
controlhaus/ 01-Nov-2005 186.7 M
cornerstone-connection/ 01-Nov-2005 54.6 K
cornerstone-datasources/ 01-Nov-2005 31.8 K
cornerstone-scheduler/ 01-Nov-2005 61.4 K
cornerstone-sockets/ 01-Nov-2005 50.8 K
cornerstone-store/ 01-Nov-2005 97.0 K
cornerstone-threads/ 01-Nov-2005 52.1 K
cos/ 07-Dec-2005 1.6 K
crimson/ 01-Nov-2005 201.2 K
cryptix/ 01-Nov-2005 473.9 K
cssparser/ 20-May-2010 112.7 K
cz/ 09-Aug-2013 22.3 M
d-haven-event/ 01-Nov-2005 134.9 K
d-haven-eventbus/ 01-Nov-2005 15.3 K
d-haven-mpool/ 01-Nov-2005 23.4 K
dalma/ 19-Aug-2011 1.4 M
dalms/ 19-Aug-2011 9.9 K
damagecontrol/ 01-Nov-2005 156.2 M
dataforge/ 01-Nov-2005 0 B
datasift/ 01-Nov-2005 181.9 K
dbunit/ 01-Nov-2005 1.2 M
de/ 20-Sep-2013 5.0 G
decorutils/ 01-Nov-2005 53.4 K
dentaku/ 01-Nov-2005 70.1 M
directory-asn1/ 01-Nov-2005 668.3 K
directory-authx/ 01-Nov-2005 0 B
directory-clients/ 01-Nov-2005 67.9 K
directory-naming/ 01-Nov-2005 140.1 K
directory-network/ 01-Nov-2005 2.2 M
directory-protocols/ 01-Nov-2005 152.0 K
directory-shared/ 01-Nov-2005 2.4 M
directory/ 25-Dec-2005 40.8 M
displaytag/ 12-Aug-2008 14.3 M
ditchnet/ 24-Nov-2005 28.3 K
dk/ 17-May-2013 76.1 M
dna/ 01-Nov-2005 15.6 M
dnsjava/ 03-Nov-2010 17.2 M
docbook/ 17-Jun-2006 14.0 M
doccheck/ 01-Nov-2005 27.8 K
dom4j/ 01-Nov-2005 8.7 M
domify/ 04-Oct-2010 37.8 K
doxia/ 28-Oct-2005 2.2 M
drone/ 01-Nov-2005 67.0 M
drools-examples/ 01-Nov-2005 14.3 K
drools/ 01-Feb-2007 468.0 M
dsh-vocabulary/ 01-Nov-2005 42.1 K
dtdparser/ 01-Nov-2005 45.7 K
dumbster/ 01-Nov-2005 46.9 K
dwr/ 24-Nov-2005 1.7 M
dynaop/ 01-Nov-2005 86.0 K
easyconf/ 01-Nov-2005 190.2 K
easymock/ 28-Oct-2005 655.8 K
echo/ 01-Nov-2005 330.5 K
echo3/ 20-May-2010 376 B
echo3extras/ 20-May-2010 388 B
eclipse/ 01-Nov-2005 15.7 M
ecs/ 01-Nov-2005 751.4 K
edenlib/ 01-Nov-2005 144.2 K
edtftp/ 01-Nov-2005 35.7 K
edu/ 29-Aug-2013 6.2 G
ehcache/ 28-Oct-2005 403.2 K
ejb/ 07-Dec-2005 0 B
el-impl/ 19-Aug-2011 163.5 K
emberio/ 01-Nov-2005 184.6 K
emma/ 18-Oct-2010 11.0 M
ervacon/ 01-Nov-2005 106.3 K
es/ 19-Feb-2013 221.0 M
esper/ 29-Jan-2008 465.2 M
eu/ 29-Aug-2013 471.3 M
excalibur-altrmi/ 01-Nov-2005 422.8 K
excalibur-cli/ 01-Nov-2005 24.5 K
excalibur-collections/ 01-Nov-2005 65.3 K
excalibur-component-examples/ 01-Nov-2005 14.7 K
excalibur-component-tests/ 01-Nov-2005 15.8 K
excalibur-component/ 01-Nov-2005 455.1 K
excalibur-concurrent/ 01-Nov-2005 30.4 K
excalibur-configuration/ 01-Nov-2005 1.5 M
excalibur-containerkit/ 01-Nov-2005 87.8 K
excalibur-datasource/ 01-Nov-2005 292.7 K
excalibur-event/ 01-Nov-2005 1.6 M
excalibur-extension/ 01-Nov-2005 27.3 K
excalibur-fortress/ 01-Nov-2005 1.1 M
excalibur-i18n/ 01-Nov-2005 528.3 K
excalibur-instrument-manager-interfaces/ 01-Nov-2005 46.8 K
excalibur-instrument-manager/ 01-Nov-2005 345.2 K
excalibur-instrument/ 01-Nov-2005 441.0 K
excalibur-io/ 01-Nov-2005 40.9 K
excalibur-lifecycle/ 01-Nov-2005 72.7 K
excalibur-logger/ 01-Nov-2005 384.1 K
excalibur-monitor/ 01-Nov-2005 99.2 K
excalibur-mpool/ 01-Nov-2005 17.6 K
excalibur-naming/ 01-Nov-2005 65.5 K
excalibur-pool/ 01-Nov-2005 290.3 K
excalibur-sourceresolve/ 01-Nov-2005 392.5 K
excalibur-store/ 01-Nov-2005 115.0 K
excalibur-thread/ 01-Nov-2005 433.6 K
excalibur-util/ 01-Nov-2005 95.6 K
excalibur-xmlutil/ 01-Nov-2005 252.0 K
excalibur/ 01-Nov-2005 1.5 M
exist/ 01-Nov-2005 979.3 K
exml/ 01-Nov-2005 119.6 K
exo/ 01-Nov-2005 16.0 M
exolabcore/ 01-Nov-2005 594.8 K
exteca/ 01-Nov-2005 436.0 K
fastutil/ 01-Nov-2005 97.4 M
fesi/ 01-Nov-2005 1.2 M
fi/ 29-Aug-2013 65.2 M
findbugs/ 06-Nov-2006 16.3 M
flox/ 01-Nov-2005 54.2 K
flux/ 13-Dec-2010 420.9 K
fm/ 16-May-2012 26.4 M
fop/ 01-Nov-2005 11.4 M
forehead/ 01-Nov-2005 64.6 K
formproc/ 01-Nov-2005 89.0 K
foxtrot/ 06-Nov-2011 553.4 K
fr/ 16-Sep-2013 398.9 M
freebxml/ 01-Nov-2005 619.0 K
freemarker/ 01-Nov-2005 5.9 M
fulcrum/ 01-Nov-2005 1.4 M
gabriel/ 01-Nov-2005 2.4 M
gbean/ 01-Nov-2005 0 B
generama/ 18-Jul-2008 1.9 M
genjar/ 01-Nov-2005 31.8 K
genjava/ 01-Nov-2005 4.0 M
geronimo-spec/ 01-Nov-2005 5.5 M
geronimo/ 09-Jan-2007 208.9 M
gg/ 08-May-2012 109.8 K
glassfish/ 19-Aug-2011 3.3 K
gnu-regexp/ 01-Nov-2005 30.7 K
gnu/ 20-May-2010 117.3 K
gov/ 15-Aug-2012 159.8 M
gr/ 08-Jan-2013 11.8 M
graphlayout/ 01-Nov-2005 107.8 K
grizzly-cachetest/ 13-Feb-2009 4.5 M
grizzly/ 19-Aug-2011 31.1 M
groovy-xmlrpc/ 27-May-2006 0 B
groovy/ 01-May-2007 359.6 M
gs/ 08-Sep-2012 2.1 M
gsbase/ 01-Nov-2005 283.7 K
hessian/ 01-Nov-2005 513.4 K
hibernate/ 26-Dec-2008 43.8 M
hivemind/ 01-Nov-2005 5.8 M
howl/ 01-Nov-2005 262.6 K
hsqldb/ 28-Oct-2005 8.1 M
htmlunit/ 01-Nov-2005 7.5 M
httpcomponents-httpcore/ 03-Jul-2007 1.2 M
httpunit/ 19-May-2010 5.6 M
hu/ 24-Apr-2013 7.4 M
hudson/ 15-Dec-2010 78.2 M
ical4j/ 01-Nov-2005 2.7 M
icu/ 03-Nov-2005 564 B
icu4j/ 04-Nov-2005 571 B
idb/ 01-Nov-2005 231.6 K
ie/ 20-May-2010 98.4 K
iirekm/ 19-May-2010 5.1 K
il/ 20-Mar-2012 99.7 K
in/ 20-Sep-2013 4.9 M
info/ 10-May-2013 588.7 M
informa/ 01-Nov-2005 182.0 K
innig/ 01-Nov-2005 322.5 K
io/ 29-Aug-2013 5.3 G
isorelax/ 01-Nov-2005 385.4 K
it/ 21-Jul-2013 7.2 G
itext/ 01-Nov-2005 8.7 M
ivory/ 01-Nov-2005 3.3 M
izpack/ 01-Nov-2005 6.1 M
jaas/ 01-Nov-2005 892 B
jackcess/ 01-Nov-2005 565.7 K
jackson/ 06-Sep-2008 4.2 M
jacl/ 01-Nov-2005 718.2 K
jaf/ 28-Oct-2005 994 B
jaimbot/ 01-Nov-2005 88.0 K
jakarta-regexp/ 01-Nov-2005 29.0 K
jalopy/ 01-Nov-2005 7.0 M
james/ 01-Nov-2005 1.1 M
janino/ 01-Nov-2005 9.2 M
jardiff/ 14-Feb-2006 773.1 K
jarjar/ 01-Nov-2005 225.3 K
jarsync/ 01-Nov-2005 58.5 K
jasper-jsr199/ 19-Aug-2011 7.1 K
jasperreports/ 01-Nov-2005 92.4 M
java2html/ 01-Nov-2005 601.0 K
java3d/ 01-Nov-2005 4.0 M
javacc/ 01-Nov-2005 860.9 K
javaconfig/ 01-Nov-2005 47.4 K
javadb/ 20-Mar-2013 116.9 M
javadoc/ 01-Nov-2005 1.3 K
javaee/ 19-Aug-2011 697.5 K
javagroups/ 01-Nov-2005 2.8 M
javainetlocator/ 01-Nov-2005 260.1 K
javamail/ 01-Nov-2005 3.4 K
javancss/ 01-Nov-2005 3.5 M
javanettasks/ 19-Aug-2011 122.4 M
javassist / 05-Apr-2008 0 B
javassist/ 17-Apr-2010 14.1 M
javatar/ 01-Nov-2005 25.8 K
javax/ 30-Mar-2012 518.5 M
javazoom/ 09-Nov-2012 572.3 K
javolution/ 16-Aug-2011 9.5 M
jawin/ 24-Nov-2005 198.6 K
jaxb/ 19-Aug-2011 102.6 K
jaxen/ 13-Dec-2013 54.1 M
jaxme/ 06-Nov-2006 16.2 M
jaxr-ra/ 20-May-2010 29.5 K
jblanket/ 01-Nov-2005 127.5 K
jboss/ 23-Apr-2013 49.3 M
jca/ 01-Nov-2005 1.8 K
jcache/ 01-Nov-2005 109.2 K
jcharts/ 16-Mar-2012 953.2 K
jcifs/ 23-Mar-2012 3.1 M
jcom/ 24-Nov-2005 56.0 K
jcommon/ 28-Oct-2005 2.1 M
jcoverage/ 01-Nov-2005 201.4 K
jcs-javagroups/ 01-Nov-2005 8.4 K
jcs/ 01-Nov-2005 722.0 K
jcvsii/ 01-Nov-2005 561.6 K
jdbc/ 28-Oct-2005 23.1 K
jdbm/ 01-Nov-2005 328.2 K
jdepend/ 01-Nov-2005 317.5 K
jdiff/ 01-Nov-2005 254.2 K
jdo/ 01-Nov-2005 136.1 K
jdom/ 28-Oct-2005 1.3 M
jdring/ 01-Nov-2005 7.6 K
jdsl/ 01-Nov-2005 132.7 K
jen/ 19-Aug-2011 898.9 K
jencks/ 01-Nov-2005 7.7 M
jep/ 01-Nov-2005 56.5 K
jepi/ 19-Aug-2011 26.1 K
jersey/ 19-Aug-2011 7.3 M
jetty/ 21-Dec-2012 84.8 M
jexcelapi/ 06-Nov-2006 1.7 M
jface/ 01-Nov-2005 60.9 K
jfree/ 26-Sep-2011 64.1 M
jfreechart/ 01-Nov-2005 6.0 M
jgen/ 01-Nov-2005 389 B
jgoodies/ 01-Nov-2005 1.3 M
jgraph/ 01-Nov-2005 4.7 M
jgrapht/ 01-Nov-2005 168.7 K
jgroups/ 19-Apr-2010 187.7 M
jhunlang/ 01-Nov-2005 885.8 K
jini/ 10-Dec-2005 1.2 M
jintention/ 19-May-2010 46.2 K
jisp/ 01-Nov-2005 91.3 K
jivesoftware/ 01-Nov-2005 2.8 M
jlibdiff/ 01-Nov-2005 47.0 K
jline/ 21-May-2011 4.9 M
jmagick/ 28-Feb-2013 378.9 K
jmaki/ 19-Aug-2011 34.9 M
jmdns/ 01-Nov-2005 228.1 K
jmimemagic/ 01-Nov-2005 200.1 K
jmml/ 01-Nov-2005 32.5 K
jmock/ 28-Oct-2005 6.2 M
jms/ 28-Oct-2005 1.9 K
jmscts/ 01-Nov-2005 1.4 M
jmsn/ 01-Nov-2005 87.3 K
joda-time/ 17-Aug-2013 31.0 M
john-test/ 29-May-2008 8.6 M
jotm/ 01-Nov-2005 504.8 K
jp/ 26-Dec-2012 48.0 M
jparsec/ 15-Oct-2012 3.5 M
jpl/ 09-Nov-2012 556.6 K
jpox-dbcp/ 14-Mar-2007 14.1 K
jpox-enhancer/ 14-Mar-2007 170.6 K
jpox-java5/ 14-Mar-2007 67.3 K
jpox/ 21-Jan-2008 77.3 M
jrexx/ 01-Nov-2005 99.5 K
jrms/ 01-Nov-2005 618.6 K
jrobin/ 01-Nov-2005 174.2 K
jruby/ 22-Aug-2007 99.2 M
jsch/ 28-Oct-2005 1.5 M
jsf-extensions/ 19-Aug-2011 26.1 K
jspapi/ 28-Oct-2005 102.6 K
jsptags/ 01-Nov-2005 48.4 K
jstl/ 19-Aug-2011 651.8 K
jstyle/ 01-Nov-2005 18.6 K
jta/ 28-Oct-2005 1.0 K
jtds/ 20-Jan-2006 1.0 K
jtidy/ 28-Oct-2005 330.8 K
juddi/ 01-Nov-2005 0 B
jug/ 01-Nov-2005 70.5 K
jung/ 01-Nov-2005 11.6 M
junit-addons/ 28-Oct-2005 54.7 K
junit-doclet/ 01-Nov-2005 77.5 K
junit/ 05-Oct-2010 13.6 M
junitperf/ 01-Nov-2005 28.9 K
juno/ 19-Aug-2011 31.5 K
jwebunit/ 01-Nov-2005 91.0 K
jxta/ 01-Nov-2005 1.5 M
jython/ 01-Nov-2005 4.4 M
kawa/ 01-Nov-2005 1.3 M
kg/ 20-Feb-2013 3.6 M
kohsuke/ 19-Aug-2011 18.3 K
kxml/ 01-Nov-2005 11.1 K
kxml2/ 01-Nov-2005 32.5 K
ldapd-common/ 01-Nov-2005 1.3 M
ldapsdk/ 01-Nov-2005 257.8 K
li/ 30-Aug-2013 1.1 M
lingo/ 01-Nov-2005 7.3 M
locc/ 01-Nov-2005 309.8 K
log4j/ 20-Apr-2010 28.5 M
log4unit/ 01-Nov-2005 63.6 K
logkit/ 02-Nov-2005 3.1 M
loom/ 01-Nov-2005 42.3 M
lt/ 15-Jan-2013 640.3 K
lucene/ 01-Nov-2005 1.8 M
ma/ 15-Jan-2012 75.1 M
magicGball/ 01-Nov-2005 12.4 K
maps/ 20-May-2010 200.8 K
marmalade/ 22-Jul-2006 1.4 M
maven-integration-test-helper/ 09-Jun-2011 0 B
maven-javanet-plugin/ 19-Aug-2011 1.1 M
maven-new/ 01-Nov-2005 19.2 K
maven-plugins/ 06-Nov-2006 52.3 M
maven-proxy/ 01-Nov-2005 4.7 M
maven-taglib/ 01-Nov-2005 834.6 K
maven-torque-plugin/ 01-Nov-2005 483 B
maven-validator/ 01-Nov-2005 817.1 K
maven-xdoclet2-plugin/ 01-Nov-2005 0 B
maven/ 06-Nov-2006 84.4 M
maxq/ 01-Nov-2005 35.6 K
mckoi/ 01-Nov-2005 1.7 M
me/ 05-Sep-2013 306.4 M
merlin-developer/ 01-Nov-2005 79.5 K
merlin-tutorial/ 01-Nov-2005 12.7 K
merlin/ 01-Nov-2005 281.6 K
messenger/ 01-Nov-2005 83.8 K
metaclass/ 01-Nov-2005 7.7 M
mevenide/ 01-Nov-2005 39.2 M
microcontainer/ 01-Nov-2005 0 B
middlegen/ 01-Nov-2005 551.3 K
milyn/ 17-May-2007 26.5 M
mm-mysql/ 01-Nov-2005 236.0 K
mm/ 01-Nov-2005 236.1 K
mockcreator/ 01-Nov-2005 104.6 K
mockit/ 20-May-2010 9.8 M
mockmaker/ 01-Nov-2005 20.9 K
mockobjects/ 01-Nov-2005 1.3 M
mockrunner/ 24-Nov-2005 404.4 K
modello/ 01-Nov-2005 2.4 K
mrj/ 01-Nov-2005 18.9 K
mstor/ 01-Nov-2005 232.2 K
msv/ 01-Nov-2005 6.5 M
mule/ 10-Apr-2007 658.7 M
muse/ 01-Nov-2005 1.0 M
mx/ 04-Jun-2013 16.6 M
mx4j/ 01-Nov-2005 7.8 M
myfaces/ 21-Nov-2005 12.0 M
mysql/ 06-Oct-2007 198.8 M
name/ 10-Sep-2013 10.2 M
nanning/ 01-Nov-2005 331.4 K
nanocontainer/ 14-Jun-2006 57.0 M
nekohtml/ 02-Jun-2008 2.4 M
neo/ 01-Nov-2005 20.6 M
net/ 16-Sep-2013 35.1 G
netbeans/ 01-Nov-2005 1.5 M
new/ 20-May-2010 92.1 K
nf/ 04-Jan-2012 227.7 K
nl/ 26-Jul-2013 1.7 G
no/ 01-May-2013 257.1 M
norbert/ 01-Nov-2005 477.4 K
nsuml/ 01-Nov-2005 3.0 M
nu/ 08-Jun-2012 22.7 M
nz/ 22-May-2012 316.3 M
oauth/ 28-Jan-2010 2.1 M
odmg/ 28-Oct-2005 14.2 K
ognl/ 15-Dec-2010 15.1 M
ojb/ 01-Nov-2005 15.5 M
ojdbc/ 28-Oct-2005 725 B
old/ 01-Nov-2005 2.2 M
oness/ 01-Nov-2005 386.8 K
open-esb/ 19-Aug-2011 29.5 K
open/ 20-May-2010 111.3 K
openejb/ 07-May-2006 392.6 M
openim/ 01-Nov-2005 1.3 M
openjms/ 01-Nov-2005 3.9 M
opennms/ 01-Nov-2005 557.1 K
opensymphony/ 19-Feb-2009 86.9 M
oracle/ 19-Aug-2011 12.1 K
org/ 08-Mar-2013 731.5 G
oro/ 28-Oct-2005 617.1 K
oscube/ 01-Nov-2005 1.1 M
p2psockets/ 01-Nov-2005 29.5 K
p6spy/ 13-Nov-2013 2.3 M
patterntesting/ 01-Nov-2005 10.5 K
payload/ 01-Nov-2005 407.3 K
pcj/ 01-Nov-2005 2.6 M
pdfbox/ 01-Nov-2005 7.6 M
penguin/ 01-Nov-2005 32.6 K
petridish/ 01-Nov-2005 801 B
ph/ 21-Jun-2012 3.4 M
piccolo/ 01-Nov-2005 115.1 K
picocontainer/ 14-Jun-2006 35.0 M
picounit/ 01-Nov-2005 2.9 M
pircbot/ 08-Apr-2011 3.4 M
pl/ 16-Sep-2013 234.1 M
plexus/ 05-Jan-2007 12.2 M
plj/ 01-Nov-2005 1.1 M
plugin/ 01-Nov-2005 0 B
pluto-container/ 01-Nov-2005 113.2 K
pmd/ 12-Nov-2011 73.2 M
pnuts/ 11-Oct-2010 608.0 K
poi/ 29-Oct-2005 20.0 M
poolman/ 01-Nov-2005 89.0 K
portlet-api/ 01-Nov-2005 17.9 K
postgresql/ 05-Oct-2010 17.7 M
prevayler/ 01-Nov-2005 4.2 M
pro/ 15-Feb-2013 7.0 M
proctor/ 19-Aug-2011 2.7 M
profiler/ 01-Nov-2005 9.8 K
proxool/ 28-Oct-2005 466.0 K
proxytoys/ 01-Nov-2005 2.3 M
pt/ 08-Jul-2013 456.6 K
pubscribe/ 01-Nov-2005 1.1 M
pull-parser/ 28-Oct-2005 157.3 K
qdox/ 28-Oct-2005 3.4 M
qfork/ 01-Nov-2005 0 B
quartz-jboss/ 25-Feb-2010 1.6 K
quartz-oracle/ 25-Feb-2010 1.1 K
quartz-weblogic/ 25-Feb-2010 1.3 K
quartz/ 01-Nov-2005 4.1 M
quilt/ 01-Nov-2005 259.3 K
radeox/ 01-Nov-2005 677.3 K
readline/ 01-Nov-2005 453 B
redhill/ 01-Nov-2005 288.1 K
redis/ 06-Oct-2010 6.4 M
redmine/ 20-May-2010 821.1 K
regexp/ 20-Oct-2006 109.8 K
relaxngDatatype/ 01-Nov-2005 31.6 K
reportrunner/ 01-Nov-2005 315.1 K
rhino/ 01-Nov-2005 12.7 M
ro/ 29-Aug-2013 255.4 M
robo-guice/ 20-May-2010 536 B
roboguice/ 20-May-2010 167.5 K
roller/ 20-May-2010 89.5 K
rome/ 19-Aug-2011 8.8 M
rs/ 01-Dec-2012 193.6 K
rss4j/ 01-Nov-2005 46.0 K
rsslibj/ 01-Nov-2005 20.3 K
ru/ 05-Sep-2013 142.9 M
sablecc/ 01-Nov-2005 1.7 M
sax/ 01-Nov-2005 28.3 K
saxon/ 20-Oct-2006 1.9 M
saxpath/ 28-Oct-2005 160.7 K
scout/ 29-Oct-2005 76.5 K
scraping-engine/ 01-Nov-2005 3.0 M
se/ 05-Sep-2013 2.5 G
securityfilter/ 01-Nov-2005 96.9 K
servicemix-ws/ 01-Nov-2005 0 B
servicemix/ 25-Mar-2006 342.3 M
servletapi/ 29-Oct-2005 696.3 K
servlets/ 01-Nov-2005 118.7 K
setpoint/ 06-Nov-2006 193.8 K
sfx4j/ 19-Aug-2011 517.5 K
shellix/ 20-May-2010 789 B
shocks/ 01-Nov-2005 9.1 M
sillyexceptions/ 01-Nov-2005 5.6 K
simple-jms/ 09-Dec-2005 373.5 K
simple-jndi/ 01-Nov-2005 3.1 M
sk/ 27-Feb-2013 453.4 M
skaringa/ 01-Nov-2005 89.2 K
skinlf/ 01-Nov-2005 383.4 K
slide/ 01-Nov-2005 5.9 M
smartrics/ 05-Oct-2012 6.4 M
soap/ 01-Nov-2005 848.4 K
soimp/ 19-Aug-2011 15.7 K
solarisrealm/ 20-May-2010 85.1 K
speexx/ 01-Nov-2005 501.6 K
spice/ 01-Nov-2005 8.9 M
spring/ 01-Nov-2005 2.0 M
springframework/ 01-Nov-2005 85.1 M
springmodules/ 20-Jun-2006 346.4 K
sshtools/ 20-May-2010 1.5 M
sslext/ 01-Nov-2005 94.3 K
stapler/ 19-Aug-2011 77.5 K
statcvs/ 01-Nov-2005 2.5 M
stax-utils/ 01-Nov-2005 112.4 K
stax/ 06-Nov-2006 1.6 M
stratum/ 01-Nov-2005 5.6 M
struts-menu/ 01-Nov-2005 869.9 K
struts/ 01-Nov-2005 11.8 M
strutstestcase/ 01-Nov-2005 1.1 M
stxx/ 01-Nov-2005 245.7 K
subpersistence/ 01-Nov-2005 237.3 K
subshell/ 01-Nov-2005 57.2 K
suiterunner/ 01-Nov-2005 501.9 K
surefire/ 28-Oct-2005 695.4 K
swarmcache/ 28-Oct-2005 31.6 K
swt/ 01-Nov-2005 9.7 M
sysunit/ 01-Nov-2005 1.0 M
tablelayout/ 01-Nov-2005 107.4 K
tagalog/ 01-Nov-2005 31.5 K
tagishauth/ 01-Nov-2005 53.1 K
taglibrarydoc/ 01-Nov-2005 608.4 K
taglibs/ 01-Nov-2005 30.1 M
tagsoup/ 05-Nov-2005 599 B
tambora/ 01-Nov-2005 4.7 M
tanukisoft/ 07-Mar-2008 3.3 M
tapestry/ 01-Nov-2005 36.5 M
tclib/ 01-Nov-2005 67.4 K
textarea/ 01-Nov-2005 66.9 K
thaiopensource/ 20-Oct-2006 779.6 K
tiffrenderer/ 01-Nov-2005 199.8 K
tjdo/ 01-Nov-2005 1.6 M
tk/ 07-Mar-2012 677.0 K
tl/ 11-Jul-2013 4.2 M
tmporb/ 01-Nov-2005 4.2 M
to/ 06-Nov-2012 9.9 M
tomcat-util/ 01-Nov-2005 843 B
tomcat/ 24-Jan-2008 64.4 M
tonic/ 08-Nov-2005 141.6 K
toplink/ 19-Aug-2011 598.8 M
torque-gen/ 01-Nov-2005 429 B
torque/ 12-Jan-2008 10.2 M
touchstone/ 01-Nov-2005 0 B
traer/ 03-Apr-2012 74.4 K
trail-taglib/ 01-Nov-2005 196.9 K
tranql/ 01-Nov-2005 6.9 M
trove/ 01-Nov-2005 999.4 K
turbine/ 01-Nov-2005 38.3 M
tv/ 21-Jul-2011 113.5 M
tw/ 12-Jun-2013 1.3 M
tyrex/ 01-Nov-2005 433.0 K
ua/ 06-Aug-2013 10.8 M
uaihebert/ 22-Feb-2013 832.3 K
ubique/ 01-Nov-2005 9.6 K
uispec4j/ 01-Nov-2005 2.5 M
uk/ 10-Jan-2013 825.2 M
urbanophile/ 01-Nov-2005 53.9 K
urlrewrite/ 24-Nov-2005 37.3 K
us/ 29-Aug-2013 72.3 M
vdoclet/ 01-Nov-2005 197.4 K
velocity-anakia/ 30-Apr-2007 22.1 K
velocity-dvsl/ 01-Nov-2005 4.2 M
velocity-tools/ 21-Dec-2012 1.6 M
velocity/ 30-Apr-2007 6.2 M
village/ 01-Nov-2005 142.9 K
vu/ 20-Jul-2013 1.5 M
wadi/ 01-Nov-2005 2.3 M
webmacro/ 01-Nov-2005 693.8 K
webtest/ 01-Nov-2005 395.7 K
werken-xpath/ 28-Oct-2005 75.4 K
werkflow/ 01-Nov-2005 792.5 K
werkz/ 01-Nov-2005 387.7 K
westhawk/ 01-Nov-2005 317.6 K
which/ 01-Nov-2005 18.1 K
wicket/ 12-Aug-2008 156.1 M
woodstox/ 14-Mar-2008 40.1 M
wrapper/ 01-Nov-2005 30.2 K
ws-commons-java5/ 01-Nov-2005 24.3 K
ws-commons-util/ 01-Nov-2005 104.3 K
ws-commons/ 19-Sep-2006 2.2 M
ws-scout/ 18-Feb-2006 146.9 K
ws/ 12-Jan-2013 14.8 M
wsdl4j/ 28-Feb-2013 3.9 M
wsrf/ 01-Nov-2005 4.4 M
wss4j/ 03-May-2006 1.0 M
wstx/ 01-Nov-2005 1016.4 K
wurfl/ 01-Nov-2005 145.8 K
wutka/ 01-Nov-2005 56.9 K
xajile/ 03-Aug-2009 0 B
xalan/ 30-Sep-2008 32.1 M
xbean/ 05-Jan-2006 537.6 K
xdoclet-plugins/ 03-Jul-2006 7.9 M
xdoclet/ 18-Jul-2008 7.0 M
xerces/ 16-Aug-2011 55.4 M
xercesjarv/ 01-Nov-2005 71.8 K
xfire-root/ 01-Nov-2005 4.9 K
xfire/ 06-Nov-2006 172.9 M
xjavadoc/ 01-Nov-2005 463.1 K
xml-apis/ 20-Aug-2011 5.1 M
xml-resolver/ 01-Nov-2005 345.3 K
xml-security/ 20-Oct-2006 2.1 M
xmlbeans/ 04-Jul-2007 28.3 M
xmldb/ 01-Nov-2005 96.2 K
xmlenc/ 01-Nov-2005 40.2 K
xmlmind/ 01-Nov-2005 210.3 K
xmlpull/ 01-Nov-2005 48.7 K
xmlrpc-helma/ 01-Nov-2005 54.4 K
xmlrpc/ 25-Jun-2006 2.2 M
xmlunit/ 08-Feb-2013 1.3 M
xmlwise/ 27-Oct-2012 81.4 K
xmlwriter/ 01-Nov-2005 763.3 K
xom/ 20-Oct-2006 3.8 M
xpp3/ 28-Oct-2005 3.0 M
xsddoc/ 01-Nov-2005 609.9 K
xsdlib/ 01-Nov-2005 489.9 K
xstream/ 28-Nov-2006 35.7 M
xtc/ 03-Apr-2012 5.6 M
xtiff-jai/ 01-Nov-2005 50.0 K
xxl/ 01-Nov-2005 1.7 M
yan/ 14-Jan-2006 4.6 M
ymsg/ 01-Nov-2005 371.8 K
yom/ 01-Nov-2005 110.8 K
za/ 23-May-2013 170.6 K
THE_NEW_REPO1_MACHINE.txt 27-May-2007 0 B
archetype-catalog.xml 14-Sep-2013 1.6 M
archetype-catalog.xml.md5 02-Aug-2013 32 B
archetype-catalog.xml.sha1 02-Aug-2013 40 B
diff.sh 28-Oct-2005 251 B
index.html.bak 03-Feb-2010 90 B
last_updated.txt 22-Sep-2013 29 B
maven-metadata.xml.md5 06-Dec-2007 0 B
maven-metadata.xml.sha1 06-Dec-2007 0 B
robots.txt 10-Nov-2009 26 B
rss.xml 06-May-2012 152.0 K
Posted by 1010
반응형

Hi I am developing a web application with eclipse and I generate the project with a maven archetype.

When I enable maven dependecy management, eclipse mark some errors in the pom file, this error is:

 Multiple annotations found at this line:
- Execution default-testResources of goal org.apache.maven.plugins:maven-resources-          plugin:2.4.3:testResources failed: 
 Plugin org.apache.maven.plugins:maven-resources-plugin:2.4.3 or one of its dependencies could not be resolved: Failed to collect 
 dependencies for org.apache.maven.plugins:maven-resources-plugin:jar:2.4.3 () (org.apache.maven.plugins:maven-resources-
 plugin:2.4.3:testResources:default-testResources:process-test-resources)
- Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile 
 (execution: default-compile, phase: compile)
- CoreException: Could not get the value for parameter compilerId for plugin execution default-compile: 
 PluginResolutionException: Plugin org.apache.maven.plugins:maven-compiler-plugin:2.3.2 or one of its dependencies could not be 
 resolved: Failed to collect dependencies for org.apache.maven.plugins:maven-compiler-plugin:jar:2.3.2 (): 
 ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.maven:maven-plugin-api:jar:2.0.6: 
 ArtifactResolutionException: Failure to transfer org.apache.maven:maven-plugin-api:pom:2.0.6 from http://repo1.maven.org/
 maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or 
 updates are forced. Original error: Could not transfer artifact org.apache.maven:maven-plugin-api:pom:2.0.6 from/to central (http://
 repo1.maven.org/maven2): null to http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-
 api-2.0.6.pom
- CoreException: Could not get the value for parameter compilerId for plugin execution default-testCompile: 
 PluginResolutionException: Plugin org.apache.maven.plugins:maven-compiler-plugin:2.3.2 or one of its dependencies could not be 
 resolved: Failed to collect dependencies for org.apache.maven.plugins:maven-compiler-plugin:jar:2.3.2 (): 
 ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.maven:maven-plugin-api:jar:2.0.6: 
 ArtifactResolutionException: Failure to transfer org.apache.maven:maven-plugin-api:pom:2.0.6 from http://repo1.maven.org/
 maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or 
 updates are forced. Original error: Could not transfer artifact org.apache.maven:maven-plugin-api:pom:2.0.6 from/to central (http://
 repo1.maven.org/maven2): null to http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-
 api-2.0.6.pom
- Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:2.4.3:resources failed: Plugin 
 org.apache.maven.plugins:maven-resources-plugin:2.4.3 or one of its dependencies could not be resolved: Failed to collect 
 dependencies for org.apache.maven.plugins:maven-resources-plugin:jar:2.4.3 () (org.apache.maven.plugins:maven-resources-
 plugin:2.4.3:resources:default-resources:process-resources)
- Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin:
 2.3.2:testCompile (execution: default-testCompile, phase: test-compile)

My pom file is the following:

<project xmlns="http://maven.apache.org/POM/4.0.0"                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.lala.sarasa</groupId>
   <artifactId>msrdecision</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>msrdecision Maven Webapp</name>
  <url>http://maven.apache.org</url>
 <dependencies>
   <dependency>
     <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>hello</finalName>
   </build>
 </project>

Any idea? Regards

share|improve this question
 
The errors hint that maven can't reach a remote repository. Does "mvn clean package" work on the console? –  KarlsFriend Jan 12 '12 at 12:33
 
no don't work, same error –  McSas Jan 12 '12 at 12:40
1  
my coworkers that use Windows are with same problem. I'm using ubuntu, same version of maven and eclipse, same project... and everything works fine... –  caarlos0 Apr 24 '12 at 18:04
add comment

12 Answers

In my case the problem was solved by Window -> Preferences -> Maven -> User Settings -> Update Settings. I don't know the problem cause at the first place.

share|improve this answer
add comment

I had the same problem but with an other cause. The solution was to deactivate Avira Browser Protection (in german Browser-Schutz). I took the solusion from m2e cannot transfer metadata from nexus, but maven command line can. It can be activated again ones maven has the needed plugin.

share|improve this answer
add comment

I also had same problem with Eclipse 3.7.2 (Indigo) and maven 3.0.4.

Eclipse wasn't picking up my maven settings, so this is what I did to fix the problem:

  1. Window - Preferences - Maven - Installations

    • Add (Maven 3.0.4 instead of using Embedded)
    • Click Apply & OK
  2. Maven > Update Project Configuration... on project (right click)

  3. Shutdown Eclipse

  4. Run mvn install from the command line.

  5. Open Eclipse

Those steps worked for me, but the problem isn't consistent. I've only had with issue on one computer.

share|improve this answer
add comment

I had a similar case for the default groovy compiler plugin

The solution was to install ME2 provided by Springsource according to this answer

Plugin execution not covered by lifecycle configuration maven error

This immediately solved the "Plugin execution not covered by lifecycle configuration" problem in Eclispe Juno.

share|improve this answer
add comment

in my case there was a dependency without a version. in eclipse m2e does not force you to enter a version so i left it blank. once i put the version in pom.xml from within eclipse all was fine

share|improve this answer
add comment

This error bothered me for two days. I tried all kinds of solutions, nothing worked. Finally I give up and tried a radical approach. and it worked! Here are the steps:

  1. Save a copy of the pom.xml,
  2. deleted all text in pom.xml
  3. Let eclipse do a clean rebuild, of course everything will be broken.
  4. pasted back everything in the original pom.xml
  5. let Eclipse build again

I guess it was "indeterministic" as the following article said.

http://wiki.eclipse.org/M2E_plugin_execution_not_covered

share|improve this answer
add comment

I would add some points that helped me to solve this problem :

Having the local repository OK, on the other hand, turned out to be quite costly, as many archetypes would not get loaded, due apparently to timeouts of m2eclipse and very unstable communication speeds in my case.

In many cases only the error file could be found in the folder ex : xxx.jar.lastUpdated, instead of the jar or pom file. I had always to suppress this file to permit a new download.

Also really worthy were :

  • as already said, using the mvn clean install from the command line, apparently much more patient than m2eclipse, and also efficient and verbose, at least for the time being.

  • (and also the Update Project of the Maven menu)

  • downloading using the dependency:get goal

    mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get -DrepoUrl=url -Dartifact=groupId:artifactId:version1

(from within the project folder) (hint given in another thread, thanks also).

  • also downloading and installing manually (.jar+.sha1), from in particular, "m2proxy atlassian" .

  • adding other repositories in the pom.xml itself (the settings.xml mirror configuration did'nt do the job, I don't know yet why). Ex : nexus/content/repositories/releases/ et nexus/content/repositories/releases/, sous repository.jboss.org, ou download.java.net/maven/2 .

To finish, in any case, a lot of time (!..) could have been et could certainly still be spared with a light tool repairing thoroughly the local repository straightaway. I could not yet find it. Actually it should even be normally a mvn command ("--repair-local-repository").

share|improve this answer
add comment

It must be a configuration problem. Your pom is fine.

Here's what I did. New folder, put your pom inside. Then in eclipse: import -> maven -> existing maven project. Dependencies got included in the project.

I did this using eclipse helios. I think the plugin version I am using is 0.12

You should check the maven properties in eclipse.

share|improve this answer
 
where are the maven properties in eclipse? –  McSas Jan 12 '12 at 12:32
 
I tried to put the pom file in a new folder. When I try to import the project eclipse show two erros: * No marketplace entries found to handle maven-compiler-plugin:2.3.2:testCompile in Eclipse. and * No marketplace entries found to handle maven-compiler-plugin:2.3.2:compile in Eclipse. // any idea? –  McSas Jan 12 '12 at 12:38
add comment

I solved this by running mvn -U install from command line and then "Maven->Update Project" from Eclipse

share|improve this answer
 
That solved my issue to, thanks! –  hithwen Jan 17 '13 at 16:12
1  
I had to first edit the pom.xml file to add the dependency on the module that was causing the problem (org.apache.maven.plugins:maven-jar-plugin, in my case), then OUTSIDE OF ECLIPSE run mvn clean and then mvn -U install in the project folder. Then I restarted eclipse and did a clean/build on the project and All Was Well. –  Laura Apr 23 '13 at 12:44
add comment

In this particular case, the solution was the right proxy configuration of eclipse (Window -> Preferences -> Network Connection), the company possessed a strict security system. I will leave the question, because there are answers that can help the community. Thank you very much for the answers above.

share|improve this answer
add comment

Just go to your user folder, inside it there's a ".m2" folder, open it and delete the folder "repository". Go to eclipse, clean your project, then right click->Maven->Update Project .. and you are ready to go.

share|improve this answer
 
That solve my issue! Very nice. :) –  Jojas Mar 23 '13 at 8:21
 
solved my issue as well! thanks –  Iced_Earth Aug 1 '13 at 20:54
 
Solved my problem..Thanks..:) –  james Sep 28 '13 at 11:46
add comment

I had same problem with Eclipse 3.7.2 (Indigo) and maven 3.0.4.

In my case, the problem was caused by missing maven-resources-plugin-2.4.3.jar in {user.home}\.m2\repository\org\apache\maven\plugins\maven-resources-plugin\2.4.3 folder. (no idea why maven didn't update it)

Solution:

1.) add dependency to pom.xml

<dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.4.3</version>
</dependency>

2.) run mvn install from Eclipse or from command line

3.) refresh the project in eclipse (F5)

4.) run Maven > Update Project Configuration... on project (right click)

JAR file is downloaded to local repository and there are no errors in WS.

share|improve this answer
 
didn't work here... –  caarlos0 Apr 24 '12 at 18:04
 
did you checked that there is org\apache\maven\plugins\maven-resources-plugin\2.4.3 in repository ? –  Betlista Apr 24 '12 at 19:32
 
yep, 2.3, 2.4.3 and 2.5. Actually, after a lot of refreshes, mvn install eclipse:eclipse, cleans, close and reopen eclipse, it finally seem to work... but, it become with another error: "Unknow error". any idea? –  caarlos0 Apr 24 '12 at 20:14
 
Try to look into {eclipse.workspace}\.metadata\.log. –  Betlista Apr 25 '12 at 6:30

 

Posted by 1010
반응형

 


Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile (execution: default-testCompile, phase: test-compile)


CoreException: Could not calculate build plan: Plugin org.apache.maven.plugins:maven-compiler-plugin:2.3.2 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-compiler-plugin:jar:2.3.2: ArtifactResolutionException: Failure to transfer org.apache.maven.plugins:maven-compiler-plugin:pom:2.3.2 from http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced. Original error: Could not transfer artifact org.apache.maven.plugins:maven-compiler-plugin:pom:2.3.2 from/to central (http://repo.maven.apache.org/maven2): null to http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.pom


으악...도저히 모르겠다..해결방법을..ㅠ.ㅠ...



찾았다..ㅋㅋㅋ해결방법을~!!!

[결과]

 



참고링크!!
http://stackoverflow.com/questions/8834806/m2eclipse-error


해결방법

접기


Solution:

1.) add dependency to pom.xml

<dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.4.3</version>
</dependency>

2.) run mvn install from Eclipse or from command line

3.) refresh the project in eclipse (F5)

4.) run Maven > Update Project Configuration... on project (right click)

JAR file is downloaded to local repository and there are no errors in WS.

접기


- 끝 -

 

출처: http://acet.pe.kr/194

Posted by 1010