Creating new live-templates with import statements

2019-03-11 14:24发布

Here is the Eclipse template that I want to port:

${:import(org.apache.log4j.Logger)}
private static final Logger LOG = Logger.getLogger(${enclosing_type}.class);

My current version in IDEA is as follows:

private static final Logger LOG = Logger.getLogger($CLASS_NAME$.class);$END$

where $CLASS_NAME$ is configured to use className() as its expression.

Unfortunately, I don't find any documentation on adding the import statement. Is there somehing equivalent to Eclipse ${:import(...)}?

3条回答
不美不萌又怎样
2楼-- · 2019-03-11 14:59

Just to save a little time for new visitors here: the accepted answer now needs some changes.
Go to Settings -> Editor -> Live Templates, select others, add a template:

private static final org.apache.logging.log4j.Logger logger = org.apache.logging.log4j.LogManager.getLogger($CLASS_NAME$.class);$END$

Then, press Edit Variables on the left and set expression for CLASS_NAME to className().
After all, set context on the bottom to Java -> Declaration (and Groovy -> Declaration if desired). Imports will be magically generated on insert.

查看更多
ら.Afraid
3楼-- · 2019-03-11 15:00

According to this post, it seems to be intended to use only full-qualified expressions. I tried it out and this worked for me:

private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger($CLASS_NAME$.class);$END$

IDEA automatically shortens it and adds the necessary import statements:

import org.apache.log4j.Logger;
// ...
private static final Logger LOG = Logger.getLogger(MyClass.class);
查看更多
smile是对你的礼貌
4楼-- · 2019-03-11 15:08

For apache commons logging use:

private static final org.apache.commons.logging.Log LOG = org.apache.commons.logging.LogFactory.getLog($CLASS_NAME$.class);$END$
查看更多
登录 后发表回答