Which is the best way to upload file in selenium webdriver with java?

--using send keys
--using autoit
--using robot class

If I want to use autoit how can I use in maven project

Can I upload file in selenium webdriver without giving hardcode path?