If this is the case, then you should make the fields public and skip the getters/setters. Getters and setters are clunky anyway, and Java is silly for not having properties like a useful language. Since your struct-like object shouldn't have any methods anyway, public fields make the most sense.
However, if either one of those do not apply, you should useyou're dealing with a real class and make the. That means all fields should be private. (If you absolutely need a field at a more accessible scope, use a getter/setter.)
If some of your data shouldn't change, then you need to make all those fields private and final and use only getters to access them. You might consider making your class immutable. If you need to validate your data, then make the fields private and provide validation in the setters and constructors. (A useful trick is to define a private setter and modify your field within your class using only that setter.)
If you changed the height and diameter, would it be the same bottle? Probably not. Those should be final. Is a negative value ok for the diameter? Must your Bottle be taller than it is wide? Can the Cap be null? No? How are you validating this? Assume the client is either stupid or evil. (It's impossible to tell the difference.) You need to check these values.